正则表达式检查字符串是否以字符串开头,忽略大小写差异

Raj*_*pta 29 javascript regex

我需要检查一个单词是否以特定子字符串开头,忽略大小写差异.我一直在使用以下正则表达式搜索模式进行此检查,但是当字符串中存在差异时,这无济于事.

我的案例敏感方式:

var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 53

i修饰符作为第二个参数传递:

new RegExp('^' + query, 'i');
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看文档.


Guf*_*ffa 17

您根本不需要正则表达式,只需比较字符串:

if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase())
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/Guffa/AMD7V/

这也处理你需要转义字符以使RegExp解决方案工作的情况,例如,否则query="4*5?"它总是匹配所有内容.

  • @ user01:是的,我在我安装的三个浏览器中对此进行了测试,并且它在所有浏览器中都更快:http://jsperf.com/regex-vs-compare (3认同)
  • @William:但是,如果字符串包含需要转义的任何内容,则该操作将失败。工作版本是不太易读的RegExp('^'+ query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$ \ |] / g,“ \\ $&”),'i')`。 (2认同)

gre*_*pit 9

我认为所有以前的答案都是正确的,这是另一个类似于SERPRO的例子,但区别在于没有新的构造函数:注意:我忽略大小写,^表示开始.

 var whatEverString = "My test String";
 var pattern = /^my/i
 var result = pattern.test(whatEverString);
 if (result === true) {
     console.log(pattern, "pattern did match !");
 } else {
     console.log(pattern, " pattern did NOT match");

 }
Run Code Online (Sandbox Code Playgroud)

如果您想尝试一下,这是jsfiddle.

在此输入图像描述