我需要检查一个单词是否以忽略大小写差异的特定子字符串开头。我一直在使用以下正则表达式搜索模式进行此检查,但是当字符串之间的大小写存在差异时,这无济于事。
我区分大小写的方式:
var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
我需要检查一个单词是否以忽略大小写差异的特定子字符串开头。我一直在使用以下正则表达式搜索模式进行此检查,但是当字符串之间的大小写存在差异时,这无济于事。
我区分大小写的方式:
var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
您根本不需要正则表达式,只需比较字符串:
if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase())
演示:http: //jsfiddle.net/Guffa/AMD7V/
这还可以处理您需要转义字符以使 RegExp 解决方案工作的情况,例如,如果query="4*5?"
它总是匹配其他所有内容。
我认为所有先前的答案都是正确的。这是另一个类似于 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 (旧版本)。
在此页面中,您可以看到修饰符可以作为第二个参数添加。在您的情况下,您正在寻找“我”(Canse 不敏感)
//Syntax
var patt=new RegExp(pattern,modifiers);
//or more simply:
var patt=/pattern/modifiers;
对于此类情况,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)