【问题标题】:What's the meaning of /gi in a regex? [duplicate]/gi 在正则表达式中的含义是什么? [复制]
【发布时间】:2015-03-11 01:11:28
【问题描述】:

我在我的 JavaScript 代码中看到这样一行:

var regex = /[^\w\s]/gi;

这个/gi在正则表达式中是什么意思?

其他部分我可以理解,因为它接受一组单词和空格,但不接受 /gi

【问题讨论】:

  • 其实匹配一个单个“非单词”、非空白字符[^A-Za-z0-9_\s]

标签: javascript regex


【解决方案1】:
g modifier: global. All matches (don't return on first match)

i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

在您的情况下,尽管i 无关紧要,因为您没有捕获[a-zA-Z]

对于像!@#$ 这样的输入,如果没有g 修饰符,正则表达式将返回第一个匹配!See here

如果有g,它将返回整个或任何可以匹配的内容。See here

【讨论】:

    【解决方案2】:

    开头和结尾/ 称为分隔符。他们告诉解释器正则表达式的开始和结束位置。结束分隔符之后的任何内容都称为“修饰符”,在本例中为gi

    gi 修饰符具有以下含义:

    • g = 全局,匹配字符串中模式的所有实例,而不仅仅是一个
    • i = 不区分大小写(例如,/a/i 将匹配字符串 "a""A"

    在您提供的上下文中 (/[^\w\s]/gi),i 毫无意义,因为正则表达式没有特定于大小写的部分。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多