我想弄清楚如何使用正则表达式来传递一个6位数字的字符串。我的麻烦是字符串可以是任何6位数字,除非它以12开头。所以第一个数字可以是1但不是第二个数字是2.第二个数字可以是2,但是如果第一个数字是1,则不能。正则表达式限制数字字符串
我试过这个,([^1])([^2])(\d{4})
,但是没有考虑到两个数字,所以它会在第二个地方阻塞任何2。
谢谢你的帮助。
我想弄清楚如何使用正则表达式来传递一个6位数字的字符串。我的麻烦是字符串可以是任何6位数字,除非它以12开头。所以第一个数字可以是1但不是第二个数字是2.第二个数字可以是2,但是如果第一个数字是1,则不能。正则表达式限制数字字符串
我试过这个,([^1])([^2])(\d{4})
,但是没有考虑到两个数字,所以它会在第二个地方阻塞任何2。
谢谢你的帮助。
您可以使用
^([02-9][0-9]|[0-9][013-9])[0-9]{4}$
详细:
^
- 串([02-9][0-9]|[0-9][013-9])
- 无论是两个备选方案:
[02-9][0-9]
- 任何数字,但1,然后任何数字|
- 或[0-9][013-9]
- 任何数字,然后任何数字但2
[0-9]{4}
- 任何4位数字$
- 端字符串。另一种方法是使用负前瞻:
^(?!12)[0-9]{6}$
见another demo。如果前两位数字为12
,则(?!12)
未能通过匹配。 [0-9]{6}
将匹配6位数字。
根据正则表达式库/方法,^
/$
锚可能不是必需的。前瞻并不总是被支持的。
非常感谢你^(?! 12)[0-9] {6} $完美地工作。 – Lucas
使用[alteration](http://www.regular-expressions.info/alternation.html) – dawg