【发布时间】:2019-05-19 07:43:03
【问题描述】:
我需要找到匹配的位置,我已经尝试过
function myFunction() {
var myvar_thru_textbox="u?"
var ptrn = new RegExp(myvar_thru_textbox, "gim");
var match;
while ((match = ptrn.exec("color colour")) != null) {
console.log(JSON.stringify(match));
}
}
此代码使用字符串“”产生无限输出
当模式变为“ou?”时它产生正确的输出,为什么?如果前面有单个字符,字符会变为无穷大?
我希望只在“u?”时产生“”或“u”。使用正则表达式。
【问题讨论】:
-
/u?/ 将匹配空字符串和“u”。那个空字符串是个问题,因为在任何给定的字符串中都有无限的实例。
-
先检查是否为空,如果是则拒绝。
-
但这将永远持续下去,这也会阻止底层的非空匹配文本
-
在你的例子中,你为什么不能只使用
"u"而不是"u?"?我认为没有充分的理由搜索空字符串片段。 -
啊,好吧,我明白了。您实际上是在询问如何清理用户提供的正则表达式。这是停机问题的变体,没有解决方案。通常,一个足够好的解决方法是在经过多次迭代或经过一段时间后取消。
标签: javascript regex