我想知道 Javascript RegExp 是否能够在正则表达式本身中打开和关闭不区分大小写。我知道您可以为整个正则表达式设置修饰符,但这不是我要讨论的内容。
例如,我的搜索字符串可能是:
teXT To seArcH TOP SECRET
.
我想找到不区分大小写的部分“要搜索的文本”,然后强制“绝密”区分大小写。
因此,这不匹配(因为最高机密区分大小写):
teXT To seArcH Top Secret
但这会匹配(第一部分的大小写并不重要):
text to search TOP SECRET
在 Perl 中,你可以这样做在搜索字符串内。 Javascript 的正则表达式引擎支持这样的东西吗?
您可以用区分大小写的“普通写法”编写正则表达式
/[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];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)