【问题标题】:Case insensitive regex in JavaScriptJavaScript 中不区分大小写的正则表达式
【发布时间】:2011-04-25 18:42:34
【问题描述】:

我想使用 JavaScript 从我的 URL 中提取一个查询字符串,并且我想对查询字符串名称进行不区分大小写的比较。这是我正在做的事情:

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

但上面的代码会进行区分大小写的搜索。我试过/<regex>/i,但没有帮助。知道如何实现吗?

【问题讨论】:

  • 该文字格式 /regex/i 应该可以工作,除非您尝试将其连接或其他什么...

标签: javascript regex


【解决方案1】:

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

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

【讨论】:

  • new RegExp('^' + string + '$', "i")
【解决方案2】:

您可以添加表示“忽略大小写”的“i”修饰符

var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);

【讨论】:

  • 我有什么办法把它变成一个字符串?
  • @CardinalSystem /abc/i
【解决方案3】:

简单的一个班轮。 在下面的示例中,它将每个元音替换为 X。

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

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

【讨论】:

  • 技术上是五行,但谁在数 ?
  • 好点。我应该少学习编码,多学习数学。
【解决方案4】:

只是一个替代建议:当您发现自己使用“不区分大小写的正则表达式”时,您通常可以通过操作要比较的字符串的大小写来完成相同的操作:

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

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

【讨论】:

  • 加 1 让我微笑:D
【解决方案5】:

例如要搜索单词date,大​​写或小写都需要添加参数i

i = 表示不区分大小写

例子

const value = "some text with dAtE";
/date/i.test(value)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多