电话号码的HTML5输入模式

时间:2018-08-16 14:15:53

标签: regex html5

pattern="^[01|02|03|07|08]{1}[0-9]{8-10}$"

我需要以12、01、02、03、07或08开头的9-12个字符。为什么我的图案不起作用?

3 个答案:

答案 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个数字。

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

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