45

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

我区分大小写的方式:

var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
4

5 回答 5

80

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

new RegExp('^' + query, 'i');

查看文档以获取更多信息。

于 2013-02-20T11:24:39.980 回答
22

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

if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase())

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

这还可以处理您需要转义字符以使 RegExp 解决方案工作的情况,例如,如果query="4*5?"它总是匹配其他所有内容。

于 2013-02-20T11:30:22.410 回答
18

我认为所有先前的答案都是正确的。这是另一个类似于 SERPRO 的示例,但不同之处在于没有新的构造函数:

注意: i忽略大小写并^表示“以”开头。

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

如果您想尝试一下,这里是jsfiddle (旧版本)。

在此处输入图像描述

于 2015-12-22T01:49:16.577 回答
2

在此页面中,您可以看到修饰符可以作为第二个参数添加。在您的情况下,您正在寻找“我”(Canse 不敏感)

//Syntax
var patt=new RegExp(pattern,modifiers);

//or more simply:

var patt=/pattern/modifiers;
于 2013-02-20T11:25:30.217 回答
0

对于此类情况,JS Regex 提供了一个名为“标志”的功能。它们在使正则表达式更有效和更广泛适用方面提供了额外的帮助。

在这里,可以使用的标志是“i”标志,它忽略大小写(大写和小写),并且不考虑它们(大小写)进行匹配。

字面符号:

let string = 'PowerRangers'
let regex = /powerrangers/i
let result = regex.test(string) // true

使用 JS 'RegExp' 构造函数:

let string = 'PowerRangers'
let regex = new RegExp('powerrangers', 'i')
let result = regex.test(string)
于 2020-12-19T08:28:41.203 回答