如何使用正则表达式允许连字符

SAR*_*SAR 4 java regex struts

我希望用户使用以下代码输入连字符

<var>
    <var-name>mask</var-name>
    <var-value>^[a-zA-Z0-9]*$</var-value>
</var>
Run Code Online (Sandbox Code Playgroud)

我正在使用 struts 验证。所以请帮我解决这个问题。

编辑

用户可以在字符串的任何位置输入连字符,因此对于-应该在开头、中间还是结尾没有限制。

ssh*_*124 5

您应该按如下方式转义它:

<var>
    <var-name>mask</var-name>
    <var-value>^[a-zA-Z0-9\-]*$</var-value>
</var>
Run Code Online (Sandbox Code Playgroud)

这是因为-是正则表达式中的特殊构造,因此如果您想按字面意思对待它,请转义它。


Rob*_*bin 5

- 是字符类中的特殊字符,您可以通过将其放在开头或结尾来“转义”它:

[-a-zA-Z0-9]
Run Code Online (Sandbox Code Playgroud)

这个字符类将匹配一个字符,或者:

  • 连字符 -
  • 或一个字母(大写或小写)
  • 或一个数字

当您以这种方式使用它时:^[-a-zA-Z0-9]*$,您确保您的字符串仅由这些字符组成(对连字符或其他可能字符的位置没有限制)