我无法理解为什么这会回归真实
let str = '\\[\\]\\(\\)\\{\\}\\<\\>';
let reg = new RegExp(/\(/g);
reg.test(str);
尚未
let str = '\\[\\]\\(\\)\\{\\}\\<\\>';
let reg = new RegExp(/\(/y);
reg.test(str);
返回false。
将全局标志添加到粘性标记也没有帮助。
答案 0 :(得分:1)
Adding the global flag to the sticky flag doesn't help either.
定义为sticky和global的正则表达式忽略 全球旗帜。
“y”标志表示它仅与指示的索引匹配 由lastIndex
您必须设置正则表达式的lastIndex
属性,默认为0,并且该索引处没有(
,这就是没有匹配的原因。 (
出现在索引5处。
let str = '\\[\\]\\(\\)\\{\\}\\<\\>';
let reg = /\(/y; // No need for new RegExp
reg.lastIndex = str.indexOf('('); // 5
reg.test(str); // True
有关粘性标记here的更多信息:
答案 1 :(得分:1)
粘性标记y
在位置0
处开始匹配(从lastIndex
属性读取)。 (
中该位置没有留下str
,因此您的第二场比赛尝试失败。
来自MDN的粘性标记:
仅匹配由
lastIndex
属性指示的索引 目标字符串中的这个正则表达式(并不会尝试 来自任何后期索引的匹配)