Dav*_*ave 9 javascript regex google-chrome
我创建一个RegExp对象(在JavaScript中)来测试数字的存在:
var test = new RegExp( '[0-9]', 'g' );
Run Code Online (Sandbox Code Playgroud)
我这样用它
console.log( test.test( '0' ) ); // true
console.log( test.test( '1' ) ); // false - why?
Run Code Online (Sandbox Code Playgroud)
这个输出更令人困惑:
console.log( test.test( '1' ) ); // true
console.log( test.test( '0' ) ); // false - why?
console.log( test.test( '1' ) ); // true
console.log( test.test( '2' ) ); // false - why?
console.log( test.test( '2' ) ); // true - correct, but why is this one true?
Run Code Online (Sandbox Code Playgroud)
如果我删除g限定符,它的行为与预期一致.
这是一个我认为是错误的错误,还是规范的一些特殊部分?是否g应该以这种方式使用限定符?(我正在为多个任务重复使用相同的表达式,因此根本没有限定符)
每个文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test#Description
test在同一个全局正则表达式实例上多次调用将超过上一个匹配.
您可以确认此行为:
var test = new RegExp( '[0-9]', 'g' );
test.test('01'); //true
test.test('01'); //true
test.test('01'); //false
Run Code Online (Sandbox Code Playgroud)
g如果您想要的是确认针对各种字符串的单个匹配,则使用该标志是没有意义的.
删除'g'标志.当您使用'g'标志时,它会更新lastIndex正则表达式的属性(准备对相同的字符串进行连续搜索),然后从该索引值开始下一次搜索(从而在下次搜索时给出错误的读数).
类似的问题和答案:为什么正则表达式Javascript // g标志影响状态?
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |