【发布时间】:2020-11-02 18:09:00
【问题描述】:
我希望用户使用以下代码输入连字符
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
我正在使用 struts 验证。所以请帮我解决这个问题。
编辑
用户可以在字符串的任意位置输入连字符,因此-应该在开头、中间还是结尾没有限制。
【问题讨论】:
我希望用户使用以下代码输入连字符
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9]*$</var-value>
</var>
我正在使用 struts 验证。所以请帮我解决这个问题。
编辑
用户可以在字符串的任意位置输入连字符,因此-应该在开头、中间还是结尾没有限制。
【问题讨论】:
您应该按如下方式对其进行转义:
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z0-9\-]*$</var-value>
</var>
这是因为- 是正则表达式中的一个特殊结构,因此如果您想按字面意思对待它,请将其转义。
【讨论】:
\w 也匹配 _,因为它是 [a-zA-Z0-9_] 的简写。此外,在字符类的开头或结尾处转义 - 是不必要的。
- 是字符类中的一个特殊字符,您可以通过将其放在开头或结尾来“转义”它:
[-a-zA-Z0-9]
这个字符类将匹配一个字符,或者:
-
当您以这种方式使用它时:^[-a-zA-Z0-9]*$,您确保您的字符串仅由这些字符组成(对连字符或其他可能字符的位置没有限制)
【讨论】: