【问题标题】:How to have multiple regex for same element如何为同一元素设置多个正则表达式
【发布时间】:2015-08-04 15:27:44
【问题描述】:

我有一个文本框,它有一个如下所示的正则表达式

^AB[a-zA-Z0-9]{20}$

它基本上允许字符 AB 后跟 20 个字母或数字,例如让我们考虑不遵循此正则表达式的验证错误是 Some Test Error

我有一个场景,用户输入 AB1234 并在文本框中跳出标签,错误 Some Test Error 显示,但我要求不显示相同的错误消息 Some如果用户尝试遵循格式但不遵守整个正则表达式,则测试错误

场景 1 :- 用户输入 CD12345675438976524381 我需要显示一些测试错误

场景 2:用户输入 AB12345 我需要鞋不同的测试错误,因为用户试图输入一个从 AB* 开始的值

如何实现这一点,有没有办法指定多个正则表达式?

【问题讨论】:

  • 请添加您已有的代码。还要用您使用的语言标记问题。

标签: regex model-view-controller


【解决方案1】:

我不确定您使用的是哪种语言...但我想您可能会在用户收到消息后更改正则表达式。当用户尝试输入整个字符串时,不要计算数字,除非用户输入第 21 个字符或不属于 [a-zA-Z0-9] 的内容...

我希望我能理解,关键是我想你及时更改正则表达式。

【讨论】:

    【解决方案2】:

    我认为您可以使用多个正则表达式并检查输入:

    • 如果输入有效,一切正常,
    • 如果输入无效检查:a) 如果以 AB 开头(正则表达式:^AB)或者是否是有效长度(正则表达式 ^([^A][^B][a-zA-Z0-9]{20})$)显示正确的信息
    • 如果完全无效,请提供其他信息

    或者您可以使用一个长正则表达式,例如:

    ^(AB[a-zA-Z0-9]{20})$|^(AB[a-zA-Z0-9]{0,19}|AB[a-zA-Z0-9]{21,})$|^([^A][^B][a-zA-Z0-9]{20})$
    

    DEMO

    在独立组中捕获给定类型的输入, 然后找出哪些组被捕获以检查正确性:

    • 如果组 1 存在 - 有效字符串,
    • 如果第 2 组 - 以 AB 开头但长度不正确,
    • 如果第 3 组 - 长度合适,开头无效

    我相信还有其他解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2015-06-06
      • 1970-01-01
      相关资源
      最近更新 更多