regex - 正则表达式中的右方括号无法转义?

标签 regex clish

我使用 clish 和正则表达式进行参数输入。 http://clish.sourceforge.net/clish-0.7.3/group__clish__ptype.html

我将字符列入白名单,如下所示:

 pattern="[a-zA-Z0-9\!\[\£\$\%\/\^\_\+\=\#\@\;\,\|\*\{\}\(\)\~\.\>\<\&\-]+"

这工作正常,我可以输入任何指定的字符。但是,如果我添加 \]\\] 来转义右方括号,则这不起作用。它与 [ 匹配,因此无法输入,也不能输入 ] 之后的任何内容。有什么想法如何转义它以便输入 ] 作为有效字符? [ 工作正常。

最佳答案

尝试这个模式

pattern="[][a-zA-Z0-9!£$%/^_+=#@;,|*{}()~.&-]+"

文字右方括号必须位于字符类中的第一个位置,以避免与结束字符类的右方括号产生歧义(因为不允许空字符类)。您可以将左方括号放在任何您想要的位置(显然不是在第一个位置,或在 - 之后)

关于regex - 正则表达式中的右方括号无法转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696834/

相关文章:

正则表达式从列表中查找单词,当特定单词没有出现在 3 个单词之前时

html - 嵌套标签的正则表达式(最里面使其更容易)

java - 正则表达式将表达式与一定数量/模式的斜杠相匹配

regex - 在 CORS 中使用正则表达式

c - klish - 动态变量和完成

java - 正则表达式匹配括号的内容