我需要检查单词是否以特定子字符串开头,忽略大小写差异。我一直在使用以下正则表达式搜索模式进行此检查,但是当字符串中存在差异时,这无效。
我的案例敏感方式:
var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
答案 0 :(得分:47)
答案 1 :(得分:15)
您根本不需要正则表达式,只需比较字符串:
if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase())
演示:http://jsfiddle.net/Guffa/AMD7V/
这也处理你需要转义字符以使RegExp解决方案有效的情况,例如query="4*5?"
总是匹配所有内容的情况。
答案 2 :(得分:7)
我认为之前的所有答案都是正确的,这是另一个类似于SERPRO的例子,但区别在于没有新的构造函数: 注意:我忽略大小写,^表示以。开头。
var scriptStart = Date.now();
// Create timeoutA
console.log('Scheduling timeoutA for 200 ms in future');
var timeoutA = setTimeout(function () {
console.log('Timeout A run after ' + (Date.now() - scriptStart) + ' ms');
}, 200);
for (; (Date.now() - scriptStart) < 50;) {
// Block the event loop for 50 ms
};
console.log('Blocked till ' + (Date.now() - scriptStart) + ' ms');
// Create timeoutB
console.log('Scheduling timeoutB for 100 ms in future');
var timeoutB = setTimeout(function () {
console.log('Timeout B run after ' + (Date.now() - scriptStart) + ' ms');
}, 100);
for (; (Date.now() - scriptStart) < 250;) {
// Block the event loop for another 200 ms
};
console.log('Blocked till ' + (Date.now() - scriptStart) + ' ms');
如果你想尝试一下,这是jsfiddle。
答案 3 :(得分:2)
在此page中,您可以看到修改器可以添加为第二个参数。在你的情况下,你正在寻找'我'(Canse麻木不仁)
//Syntax
var patt=new RegExp(pattern,modifiers);
//or more simply:
var patt=/pattern/modifiers;
答案 4 :(得分: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)