我想知道 Javascript RegExp 是否能够在正则表达式本身中打开和关闭不区分大小写的功能。我知道您可以为整个正则表达式设置修饰符,但这不是我要说的。
例如,我的搜索字符串可能是:teXT To seArcH TOP SECRET
.
我想找到不区分大小写的部分“要搜索的文本”,然后强制“绝密”区分大小写。
因此,这不匹配(因为绝密区分大小写):teXT To seArcH Top Secret
但这会匹配(第一部分情况无关紧要):text to search TOP SECRET
在 Perl 中,you can do this在搜索字符串中。 Javascript 的正则表达式引擎是否支持这样的东西?
最佳答案
您可以在区分大小写的“普通”中编写 RegExp
/[tT][eE][xX][tT] [tT][oO] [sS][eE][aA][rR][cC][hH] TOP SECRET/
.test('text to search TOP SECRET');
// true
另一种方法是两个正则表达式,一个不敏感的,然后是严格的
function test(str) {
var m = str.match(/text to search (TOP SECRET)/i);
return (m || false) && /TOP SECRET$/.test(m[1]);
}
test('text to search TOP SECRET'); // true
test('text to search ToP SECRET'); // false
此外,功能
test
以上可以在这种特定情况下进行优化(因为 TOP SECRET
部分实际上是一个字符串文字,它总是具有完全相同的形式),它不需要第二个完整的 RegExp 测试来检查它,即你可以做(m || false) && 'TOP SECRET' === m[1];
关于javascript - Javascript RegExp 可以不区分大小写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742031/