pattern="^[01|02|03|07|08]{1}[0-9]{8-10}$"
我需要以12、01、02、03、07或08开头的9-12个字符。为什么我的图案不起作用?
答案 0 :(得分:1)
这应该对您有用
^(01|02|03|07|08){1}[0-9]{8,10}$
您的问题是使用[]
而不是()
检查第一个数字。您需要在括号中加上逻辑或。您所使用的方式实际上是将它与任意数字或|
的一个字符进行匹配。
例如:
012345678
会与您所使用的模式匹配,|12345678
也将与之匹配
答案 1 :(得分:1)
您不需要 ^
和$
。我试图简化您的模式:
[01|02…08]
更改为0(1|2…8)
,因为您需要使用括号,如chevybow所述,{8-10}
更改为{7,10}
,因为您说您“需要9-12个字符” ,而-
在{{1}中不起作用}。此代码段对我有用:
{}
答案 2 :(得分:1)
我认为您尝试使用alternation (01|02|03|07|08)
而不是使用character class [01|02|03|07|08]
中的数字
但是,即使您使用带替换版本的版本,也将匹配2位数字,并且在您的正则表达式中将后跟[0-9]{8-10}
,这将是匹配的10-12位数字的总和,而不是9-12 < / p>
您可以将前置零放在charcter类之前,并将12378保留在character类中。那将是2个字符,剩下匹配的7 -10个数字。
您不需要^
和$
,因为正则表达式已锚定。