pattern="^[01|02|03|07|08]{1}[0-9]{8-10}$"
我需要从01,02,03,07或08开始的9-12个字符。为什么我的模式不起作用?
这应该适合你
^(01|02|03|07|08){1}[0-9]{8,10}$
你的问题是使用[]
而不是()
检查第一个数字。你需要括号与逻辑ors。你有它的方式你只是字面上匹配任何数字或|
的一个字符。
例如:
012345678
会匹配,就像你使用的模式一样|12345678
我认为你试图使用alternation (01|02|03|07|08)
而不是使用character class [01|02|03|07|08]
中的数字
但即使你使用的是带有替换的版本,也会匹配2位数,并且在你的正则表达式中会跟随[0-9]{8-10}
,这将是匹配的10 - 12位而不是9 - 12位
您可以在字符类之前放置前置零,并将12378留在字符类中。那将是2个字符,留下匹配的7-10个跟随数字。
你不需要^
和$
,因为正则表达式已经锚定。
你不需要^
和$
。我试图简化你的模式:
[01|02…08]
更改为0(1|2…8)
因为你需要使用括号作为chevybow解释,{8-10}
改为{7,10}
,因为你说你“需要9-12个字符”,而-
在{}
中不起作用。这段代码对我有用:
<form>
<input pattern="0(1|2|3|7|8)[0-9]{7,10}" />
<input type="submit" />
</form>