我在JavaScript代码中看到一行代码如下:
var regex = /[^\w\s]/gi;
正则表达式中/gi
的含义是什么?
其他部分我可以理解,因为它接受一组单词和空格,但不接受/gi
。
答案 0 :(得分:62)
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
答案 1 :(得分:15)
开头和结尾/
称为分隔符。他们告诉口译员正则表达式的开始和结束。在结束分隔符之后的任何被称为“修饰符”,在这种情况下为g
和i
。
g
和i
修饰符具有以下含义:
g
= global,匹配字符串中所有模式的实例,而不仅仅是一个i
=不区分大小写(例如,/a/i
将匹配字符串"a"
或"A"
。在你给出的上下文(/[^\w\s]/gi
)中,i
没有意义,因为正则表达式中没有特定于案例的部分。