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

时间:2014-04-03 09:11:03

标签: java regex struts

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

<var>
    <var-name>mask</var-name>
    <var-value>^[a-zA-Z0-9]*$</var-value>
</var>

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

修改

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

2 个答案:

答案 0 :(得分:3)

你应该按如下方式逃避它:

<var>
          <var-name>mask</var-name>
          <var-value>^[a-zA-Z0-9\-]*$</var-value>
        </var>

这是因为-是正则表达式中的一个特殊构造,因此如果你想按字面意思对待它,就逃避它。

答案 1 :(得分:3)

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

[-a-zA-Z0-9]

此角色类将匹配一个角色:

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

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