【问题标题】:how to allow hyphens using regex如何使用正则表达式允许连字符
【发布时间】:2020-11-02 18:09:00
【问题描述】:

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

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

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

编辑

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

【问题讨论】:

标签: java regex struts


【解决方案1】:

您应该按如下方式对其进行转义:

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

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

【讨论】:

  • @sshashank124:小心,\w 也匹配 _,因为它是 [a-zA-Z0-9_] 的简写。此外,在字符类的开头或结尾处转义 - 是不必要的。
【解决方案2】:

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

[-a-zA-Z0-9]

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

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

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

【讨论】:

  • @Edan:请看我的,我想你对角色类角色本身感到困惑。
猜你喜欢
  • 2012-08-02
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多