我有另一个问题,虽然它得到了解答我不明白为什么正则表达式会受到影响
它来自w3schools
g:执行全局匹配(查找所有匹配项,而不是在第一次匹配后停止)
是当然.我明白.这就是为什么我在这段代码中得到一个数组
var str="The rain in SPAIN stays mainly in the plain";
var patt1=/ain/gi;
document.write(str.match(patt1));
Run Code Online (Sandbox Code Playgroud)
输出:
ain,AIN,ain,ain
Run Code Online (Sandbox Code Playgroud)
正则表达式类似,/g它将替换多个实例.
然而在比赛中
var re=/hi/gi;
alert(re.test("hi") + " " + re.test("hi"));
Run Code Online (Sandbox Code Playgroud)
结果是"真假".
现在为什么$%^&它会这样做?两个测试中的字符串完全相同!在过去,我认为全球意味着它将搜索新行(这是我想在此测试中做的).我引用的第一件事是关于g是全球比赛.
没有任何关于它的任何参考影响NEXT CALL!没有/ g代码将正常工作(我也不需要跨越换行符).为什么它会影响下一次测试?gumbo的答案提到它会影响调用的lastIndex以及%^&*我不知道有共享状态,因为其他两个函数在我使用g标志时没有使用它.我只想要一个真假,但如果有什么不匹配则返回一个包含全局匹配数量的int?(即"hi"中的1,但字符串"hihi"中的2).
在做regex.test时为什么会影响我的下一次调用?!如果可以的话,提供我真正想要的"功能"
在正则表达式中使用全局标志时,将更新lastIndex属性.lastIndex属性是开始下一个匹配的索引.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp
您可以在再次呼叫之前重置最后一个索引.看到
为什么在Javascript中使用全局标志的RegExp会给出错误的结果?
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |