【问题标题】:Regex first three characters, then only numbers or characters, optionally followed by two digits正则表达式前三个字符,然后只有数字或字符,可选地后跟两位数字
【发布时间】:2021-06-08 02:22:29
【问题描述】:

我正在尝试创建一个正则表达式,它将在开头匹配前三个字符,然后是数字或字符,后跟(可选)一个字符,后跟两个数字。最大长度为 25。

BER12345 - match
BER123456A10 - match

我的尝试:^(?=[A-Z]{3,25}$)[A-Z0-9]{5,20}[0-9]{0,2]$

【问题讨论】:

  • 你试过regex101.com 吗?在那里你可以测试你的正则表达式,还有关于如何得到你想要的东西的很好的解释。
  • 这些规则不是很清楚。至少对我来说。您能否详细说明包括您自己解决此问题的尝试。
  • "^(?=[AZ]{3,25}$)[A-Z0-9]{5,20}[0-9]{0,2]$" 我有max.length 的问题,它也匹配 0BER1234(开头的一个数字),它应该只有前三个字符后跟数字,之后可以是一个字符后跟两个数字。最大限度。整个字符串的长度应为 25。
  • "应该只有前三个字符后跟数字"有点不同"匹配开头的前三个字符,然后是数字或者 个字符”。我仍然对你到底需要什么感到困惑。
  • 我建议编辑您的问题并放置更多示例,其中一些不匹配,并解释为什么不匹配。我们也许会更好地理解要应用的规则......

标签: regex vba


【解决方案1】:

这应该可以解决问题:

(^[A-Z]{3}[A-Z0-9]{1,19}[A-Z0-9]\d{2}$)|(^[A-Z]{3}[A-Z0-9]{1,22}$)Regex101

BER - no match (desn't have digits or chars after begining)
BER456 - match
BER12345 - match
BER123456A10 - match
BER12345678910dasdd123 - no match (lowercase)
BER1234567890123456789123 - match (only numbers) 
BER1234S67890AFF456789123 - match (uppercase) 
BER1234S67890AFF4567891DA - match (with letters at the end) 
BER12345678989A10dasdd123 - no match (lowercase)
BER1234S67890AFF456789123A - no match (max size)
BER1234567890123456789A10AAA123 - no match (max size)

如果您想匹配上面的第一个示例,只有 3 个字符 BER ,只需将 {1,19}{1,22} 更改为 {0,19}{0,22}

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多