【问题标题】:regex_match allow '正则表达式匹配允许'
【发布时间】:2013-01-26 04:12:08
【问题描述】:

我正在使用 regex_match 验证姓氏

到目前为止,我有这个 regex_match[/^[a-zA-Z -]{0,25}+$/],但我也想允许 ' 使用像 O'Neal 这样的名字。我试过这个regex_match[/^[a-zA-Z -\']{0,25}+$/] 但没用

有什么建议吗?

谢谢, J

【问题讨论】:

  • 怎么不行?你得到了什么?
  • 即使我尝试使用像 Smith 这样的普通名称时也会出错
  • 您不需要转义单引号。

标签: regex validation


【解决方案1】:

-\' 是无效范围。您需要将破折号放在字符类的末尾:

/^[a-zA-Z '-]{0,25}$/

+ 在这里是多余的(在某些正则表达式中,它会激活“占有匹配”,但这里绝对不需要),反斜杠也是如此。

此外,我怀疑正则表达式周围的方括号在您使用的任何语言中的语法都不正确。 (顺便问一下,那是哪一个?)

但真正的问题是您的trying to validate a name(使用正则表达式,不少于)。

【讨论】:

    【解决方案2】:

    您不需要 \ 来转义 ',但您可能应该将破折号放在最后,这样它就不会创建范围。

    {0,25} 之后也不需要+,它不是有效的正则表达式。

    这对我来说很好^[a-zA-Z '-]{0,25}$

    【讨论】:

    • 但是,对于名称,为什么对有效字符有限制?更重要的是,为什么 0 长度有效,而 26 无效?
    • 您正在创建从whitespace' 的范围。
    • @RohitJain 甚至没有看到!让我解决这个问题
    • 例如,a{0,25}+ 在 Java 或 PHP 中完全有效。
    • 好吧,我的 Regex 工具在抱怨它,但它适用于 c# 开发。
    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2011-05-01
    相关资源
    最近更新 更多