如何允许0到12之间的数字,并且除了它之外还有其他模式

时间:2019-04-26 01:25:27

标签: html regex

我正在尝试找出html的模式,但无法使其正常工作...

结果,我正在寻找低于此数字的值:“ 12.50”

<input type='text' class='form-control' name='wrap' id='wrap' placeholder='0.00' pattern='^([1-9]|1[012]+[.]+[0-5]+[0])$' required>

我希望第一个数字是0到12之间的数字,之后是“。”然后是介于0-5之间的数字,最后只是0。

如果我只有0到12个正则表达式,它会起作用,但是当我添加句号和其余部分的模式时,它会刹车并且不起作用。

2 个答案:

答案 0 :(得分:2)

您对分组和量词的使用不正确。此外,^$在HTML5 pattern正则表达式中是多余的,因为这些模式在编译时会自动用^(?:)$括起来。

您可以使用更精确的模式,例如

pattern='(?:[1-9]|1[012])\.[0-5]0'

它将被编译为/^(?:(?:[1-9]|1[012])\.[0-5]0)$/(或在Firefix和Chrome中使用u修饰符),并且将匹配:

  • ^-字符串的开头
  • (?:-一个non-capturing外部群组的开始
    • (?:[1-9]|1[012])-与1 t到12之间的数字不匹配的组
    • \.-一个点
    • [0-5]0-从0到5的数字,然后是零
  • )$-外部分组的结尾和字符串的结尾。

请参见regex demoRegulex graph

enter image description here

答案 1 :(得分:1)

好吧,我知道了,“ |”意思是说,所以我不得不稍微调整一下代码。

  <input type='text' class='form-control' name='wrap' id='wrap' placeholder='0.00' pattern='^([0-9][.][0-5][0]|1[012][.][0-5][0])$' required>

所以我之前有^([1-9] | 1 [012] + [。] + [0-5] + [0])$

如果我将其拆分,则会得到:

[1-9]

AND

1 [012] + [。] + [0-5] + [0]

我实际需要的是将+ [。] + [0-5] + [0]添加到两个模式中