我正在尝试找出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个正则表达式,它会起作用,但是当我添加句号和其余部分的模式时,它会刹车并且不起作用。
答案 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的数字,然后是零)$
-外部分组的结尾和字符串的结尾。答案 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]添加到两个模式中