我试图找出如何使用正则表达式传递一个6位数的字符串。我的麻烦是字符串可以是任何6位,除非它以12开头。所以第一个数字可以是1,但如果第二个数字是2则不是。第二个数字可以是2,但如果第一个数字是1,则不是。
我尝试了这个,([^1])([^2])(\d{4})
但是没有考虑到这两个数字,所以它会阻止第二个点中有2个的任何数字。
感谢您的帮助。
答案 0 :(得分:5)
您可以使用
^([02-9][0-9]|[0-9][013-9])[0-9]{4}$
请参阅regex demo
<强>详情:
^
- 字符串开头([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位数。
根据正则表达式库/方法,可能不需要^
/ $
个锚点。也不总是支持前瞻。