javascript - Javascript RegExp 可以不区分大小写吗?

标签 javascript regex

我想知道 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/

相关文章:

python-3.x - 正则表达式从python获取单行和多行

javascript - 在 div 中添加嵌套的 if else 语句

javascript - 如何在npm的请求包中使用proxy

javascript - 将数据传递到表单域

MySQL通过相关性从句子的任何位置获取完整的单词匹配(不是字符)

javascript - 使用正则表达式从 html 页面获取所有链接

javascript - 如何使用 .include() 方法检查数组内 json 中的值

javascript - 如何以编程方式在浏览器中跨域启用数据源?

使用 Rails ActiveRecord 的 MySQL REGEXP

javascript - 使用 angularJs ng-Pattern 进行 10 位正则表达式验证