【发布时间】:2014-07-11 11:38:28
【问题描述】:
我正在使用 clish 和正则表达式进行参数输入。 http://clish.sourceforge.net/clish-0.7.3/group__clish__ptype.html
我正在将这样的字符列入白名单:
pattern="[a-zA-Z0-9\!\[\£\$\%\/\^\_\+\=\#\@\;\,\|\*\{\}\(\)\~\.\>\<\&\-]+"
这很好用,我可以输入任何指定的字符。但是,如果我添加 \] 或 \\] 来转义右方括号,这将不起作用。它与[ 匹配,因此无法输入,] 之后的任何内容都无法输入。任何想法如何转义它以便输入 ] 作为有效字符? [ 工作正常。
【问题讨论】:
-
尝试使用此工具调试:regex101.com
-
它不工作,但它在做什么呢?是抛出错误,还是匹配错误的东西,还是......?
-
&gt;\&lt;\&amp;?为什么需要将它们转义为 html 实体? -
关于您的正则表达式的严重不相关问题是
[]一次只匹配一个字符,而不是&amp;,即 5。 -
可能值得更改模式中项目的顺序,看看是否会有所不同。我会试试这个:
"[-\]\.\^\\![$%/£+=#@;,|*{}()~<>&\w]+",编码将其转换为有效 XML 所需的最小值。这种模式也比您拥有的模式更简单,因为它删除了一些不需要的转义并使用 \w 而不是 a-zA-Z0-9。