如何创建一个正则表达式来验证数字不相同,即使用连字符 (-) 或字母数字分隔
how to create a regular expression to validate the numbers are not same even separated by hyphen (-) or Alpha Numeric
要求是:字段由 1 个字母字符后跟 15 个字母数字字符组成,包括最多 2 个连字符 (-)
正则表达式:^(?!^(.)\1*$)([A-Z]{1}(?=[A-Z0-9-]{2,15}$)[A-Z0-9]*(?:\-[A-Z0-9]*){0,2}[A-Z0-9]+$)
上面的正则表达式工作正常,但根据要求不允许重复数字,如 1) N000000000000000 2)N000000-0000-0
以上 2 个值不允许,因为它的数字与“0”相同。
您可以使用
^[A-Z](?!\D*(\d)(?:\D*)+\D*$)(?=.{2,15}$)[A-Z0-9]*(?:-[A-Z0-9]*){0,2}[A-Z0-9]+$
见regex demo。在代码中,在你的字符串文字中,确保你对反斜杠进行了两次转义。
详情:
^
- 字符串开头
[A-Z]
- 大写 ASCII 字母
(?!\D*(\d)(?:\D*)+\D*$)
- 字符串不能只包含相同的数字
(?=.{2,15}$)
- 当前位置右侧除换行字符外必须有 2 到 15 个字符
[A-Z0-9]*
- 零个或多个 ASCII 大写 letters/digits
(?:-[A-Z0-9]*){0,2}
- -
零次、一次或两次出现,然后是零次或多次 ASCII 大写 eletters/digits
[A-Z0-9]+
- 一个或多个 ASCII 大写 letters/digits
$
- 字符串结尾。
`
要求是:字段由 1 个字母字符后跟 15 个字母数字字符组成,包括最多 2 个连字符 (-)
正则表达式:^(?!^(.)\1*$)([A-Z]{1}(?=[A-Z0-9-]{2,15}$)[A-Z0-9]*(?:\-[A-Z0-9]*){0,2}[A-Z0-9]+$)
上面的正则表达式工作正常,但根据要求不允许重复数字,如 1) N000000000000000 2)N000000-0000-0
以上 2 个值不允许,因为它的数字与“0”相同。
您可以使用
^[A-Z](?!\D*(\d)(?:\D*)+\D*$)(?=.{2,15}$)[A-Z0-9]*(?:-[A-Z0-9]*){0,2}[A-Z0-9]+$
见regex demo。在代码中,在你的字符串文字中,确保你对反斜杠进行了两次转义。
详情:
^
- 字符串开头[A-Z]
- 大写 ASCII 字母(?!\D*(\d)(?:\D*)+\D*$)
- 字符串不能只包含相同的数字(?=.{2,15}$)
- 当前位置右侧除换行字符外必须有 2 到 15 个字符[A-Z0-9]*
- 零个或多个 ASCII 大写 letters/digits(?:-[A-Z0-9]*){0,2}
--
零次、一次或两次出现,然后是零次或多次 ASCII 大写 eletters/digits[A-Z0-9]+
- 一个或多个 ASCII 大写 letters/digits$
- 字符串结尾。 `