JavaScript中不区分大小写的正则表达式

146

我想使用JavaScript从我的URL中提取查询字符串,并且想要对查询字符串名称进行不区分大小写的比较。以下是我的操作:

var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (!results) { return 0; }
return results[1] || 0;

但是上面的代码执行的是区分大小写的搜索。我尝试了 /<regex>/i,但没有帮助。有什么想法可以实现不区分大小写的搜索吗?


6
那个字面上的格式 /regex/i 应该可以正常工作,除非你试图将它拼接起来或进行其他操作... - Alex
5个回答

243
你可以添加'i'修饰符,它表示"忽略大小写"。
var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);

3
我怎么把它变成一个字符串? - Cardinal System
24
@CardinalSystem /abc/i 可以翻译为“在任何地方查找 'abc',并忽略大小写。” - aross

51

修饰符作为第二个参数给出:

new RegExp('[\\?&]' + name + '=([^&#]*)', "i")

2
new RegExp('^' + string + '$', "i") - Vadim

9

简单的一行代码。在下面的示例中,它将每个元音字母替换为 X。

function replaceWithRegex(str, regex, replaceWith) {
  return str.replace(regex, replaceWith);
}

replaceWithRegex('HEllo there', /[aeiou]/gi, 'X'); //"HXllX thXrX"

1
技术上讲是五行,但谁在数呢。 - ashleedawg
好的观点。我应该减少编程学习的时间,增加数学学习的时间。 - Diego Fortes

7
例如,如果要搜索单词date,无论大写或小写,您需要添加参数ii = 表示大小写不敏感 示例:
const value = "some text with dAtE";
/date/i.test(value)

或者
const value = "some text with dAtE";
 new RegExp("/date/","i");

4

只是一个备选建议:当你想要使用“不区分大小写的正则表达式”时,通常可以通过操纵要比较的字符串的大小写来实现相同的效果:

const foo = 'HellO, WoRlD!';
const isFoo = 'hello, world!';
return foo.toLowerCase() === isFoo.toLowerCase();

我认为这样更易于阅读和理解作者的意图!

2
加1让我微笑 :D - Inder Kumar Rathore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接