/gi 在正则表达式中的含义是什么?

What's the meaning of /gi in a regex?

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

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

正则表达式中 /gi 的含义是什么?

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

开头和结尾/称为定界符。它们告诉解释器正则表达式的开始和结束位置。任何 结束定界符之后被称为 "modifier," 在这种情况下 gi.

gi 修饰符具有以下含义:

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

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

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 修饰符,正则表达式将 return 首先匹配 !See here.

如果 g 存在,它将 return 整个或任何它可以匹配的东西。See here