HTML5电话号码输入模式

问题描述 投票:0回答:3
pattern="^[01|02|03|07|08]{1}[0-9]{8-10}$"

我需要从01,02,03,07或08开始的9-12个字符。为什么我的模式不起作用?

regex html5
3个回答
1
投票

这应该适合你

^(01|02|03|07|08){1}[0-9]{8,10}$

你的问题是使用[]而不是()检查第一个数字。你需要括号与逻辑ors。你有它的方式你只是字面上匹配任何数字或|的一个字符。

例如:

012345678会匹配,就像你使用的模式一样|12345678


1
投票

我认为你试图使用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个跟随数字。

你不需要^$,因为正则表达式已经锚定。

0[12378][0-9]{7,10}


1
投票

你不需要^$。我试图简化你的模式:

  • [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>
© www.soinside.com 2019 - 2024. All rights reserved.