如何创建一个正则表达式来验证数字不相同,即使用连字符 (-) 或字母数字分隔

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
  • $ - 字符串结尾。 `