/gi 在正则表达式中的含义是啥? [复制]

Posted

技术标签:

【中文标题】/gi 在正则表达式中的含义是啥? [复制]【英文标题】: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] 【参考方案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 毫无意义,因为正则表达式没有特定于大小写的部分。

【讨论】:

以上是关于/gi 在正则表达式中的含义是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式中/i,/g,/ig,/gi,/m的区别和含义

正则表达式中+的含义是啥?

正则表达式中 + 的含义是啥?

js中的正则表达式

sed 和正则表达式中逗号“,”的所有含义是啥?

正则表达式中方括号“[]”内的浮点范围是啥意思? [复制]