/([.*+?^=!:${}()|\[\]\/\\])/g
/ /g
( )
[ ]
左:.*+?^=!:${}()
右:\[\]\/\\
或运营商的右侧:
\[
匹配[
\]
匹配]
\/
匹配/
\\
匹配\
我的第4步是否正确? 第4步剩下的部分是什么
.*+?^=!:${}()
在方括号旁边匹配?
因为第3步是[],所以它只匹配一个字符。它是否正确?
从这里复制正则表达式:
答案 0 :(得分:4)
第4步没有左或右部分
[.*+?^=!:${}()|\[\]\/\\]
定义一个由以下内容组成的字符集:
因此,整个表达式的这一部分将匹配在方括号[ ... ]
答案 1 :(得分:2)
@zerkms有一个很好的答案。我只是想提供一个替代方案 - 指向真正有用的网站regex101.com
。在那里你可以输入你的表达,你会得到一个很好的解释,如何解释它;你也可以输入字符串,看看匹配的是什么。放入上面的表达式(参见http://regex101.com/r/iG3lA0)确认最外面括号内的所有内容都被视为单个字符类,具有[]/\
的转义值;整个表达式可以解释为
"匹配任何位置的任何字符
.*+?^=!:${}()|[]/\
string,并将这些字符作为单独的匹配返回"。
有关[]
字符类构造中特殊字符的规则有点奇怪 - 例如参见http://www.regular-expressions.info/charclass.html。并且/g
标志意味着这匹配字符串中匹配的任何位置(而不是仅仅一次)。这就是你问题最后一部分的答案:
"虽然方括号内的表达式一次只匹配一个字符,但/g
标志表示匹配在任何地方执行,并且每个匹配的字符作为单独的匹配返回"。