【问题标题】:Limit the total length of the Regex限制正则​​表达式的总长度
【发布时间】:2020-01-26 07:12:04
【问题描述】:

下面是我的正则表达式:

^([a-zA-Z0-9]+)(?:[-]{1})[a-zA-Z0-9]+$

我试图将总字符串的长度限制为 15 个字符,包括特殊字符 (-)。

例如: BBB-123BBBWWRTY

【问题讨论】:

  • 如果不需要捕获组,可以使用^(?=.{15}$)[a-zA-Z0-9]+-[a-zA-Z0-9]+$
  • 如果您能提供更多示例,将会很有帮助。如果有固定数量的由 - 分隔的字符,我们可以避免前瞻。还要提到区分大小写。

标签: regex


【解决方案1】:

我认为应该是这样的:

^(?=.{15}$)([a-zA-Z0-9]+)(?:[-]{1})[a-zA-Z0-9]+$

【讨论】:

  • 我理解“将字符串限制为 15 个字符”的意思是“最多允许 15 个字符,但可能更少”,所以我会使用 (?=.{1,15}§) 作为前瞻断言。
  • 也许吧。我以为是 15 位数字,但在您发表评论后,我开始认为它可能真的是 [1-15] 位数字的长度。
  • 谢谢,它适用于单个条目,如果我有多个条目,则它不起作用。例如:BBB-123BB45,AAA-1234;EEE-9876 在这里,我想验证整个输入,其中分隔符是 (; & ,)。我尝试为此 /^((?=.{1,15}$)([a-zA-Z0-9]+)(?:[-]{1})[a-zA -Z0-9]+)(([;,](?=.{1,15}$)([a-zA-Z0-9]+)(?:[-]{1})[a-zA -Z0-9]+)*)?$/
【解决方案2】:

对于不超过尝试否定的前瞻。

/^(?!.{16})[a-z\d]+-[a-z\d]+$/i

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 2017-01-09
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多