当任何一方匹配时,JS 正则表达式'|'匹配



我想匹配"/ab/"或"/除'/'以外的任何内容"的字符串;我认为它可以很容易地用"|"来完成。但我没有得到我想要的结果:

console.log(/"(/ab/)"/.test('"/ad/"')); // false
console.log(/"(/[^/]*)"/.test('"/ad/"')) // false
console.log(/"(/ab/)|(/[^/]*)"/.test('"/ad/"')); //true

我是不是误会了什么?

交替适用于它之前和之后的所有内容,包括"s。你说的是"匹配"(/ab/)/[^/]*)""。 .为了避免这种情况,请将交替放在自己的组中(而不是在两组之间(:/"(/ab/|/[^/]*)"/

console.log(/"(/ab/)"/.test('"/ad/"')); // false
console.log(/"(/[^/]*)"/.test('"/ad/"')) // false
var rex = /"(/ab/|/[^/]*)"/;
console.log(rex.test('"/ad/"')); //now false
console.log(rex.test('"/ab/"')); //true
console.log(rex.test('"/an"')); //true

最新更新