简单地说,在node.js或浏览器中,运行以下代码:
const sep = '\\';
const regExpression = `/b\\${sep}|a\\${sep}/`;
const testCases = ['a\\abb\\abc','b\\'];
const regTest = new RegExp(regExpression);
console.log(`Result for ${testCases[0]} is ${regTest.test(testCases[0])}`)
console.log(`Result for ${testCases[1]} is ${regTest.test(testCases[1])}`)
两个输出均为false:error
但是,如果我改为:
const regExpression = `/c|b\\${sep}|a\\${sep}/`;
这两个结果都是真的……为什么?正确的
另一件有趣的事情是:匹配条件不可能总是第一个,以“/c|b${sep}| a${sep}/”为例,“c”将不匹配。。。。。
1条答案
按热度按时间nlejzf6q1#
是因为正则表达式本身。
在第一种情况下
/b\\\\|a\\\\/
->正则表达式->//b\\|a\\//
. 正则表达式将尝试查找/b\\
或a\\/
. 因此,这两个值都将失败。在第二种情况下
/c|b\\\\|a\\\\/
->正则表达式->/c|b\\|a\\/
. 正则表达式将尝试查找/c
或b\\
或a\\/
.因此,总之,您可以通过以下方式解决您的问题:
这应该设法找到
b\\
或a\\
. 我不知道情况是否如此,但请记住^
及$
regex代币也是。您可以在regex101中进行测试。