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

时间:2013-02-20 11:23:21

标签: javascript regex

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

我的案例敏感方式:

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

5 个答案:

答案 0 :(得分:47)

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

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

有关详细信息,请查看the documentation

答案 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

enter image description here

答案 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)