我正试图以我拥有的形式限制表单输入。特定输入是针对具有非常特定要求的ID。其中一个例子是:
YY.MM.DD-000.00
我正在使用的代码来限制它:
<form>
<input type="text" class="form-control" id="nid"
name="nid" placeholder="@lang('app.nid')"
pattern="[00-99]{2}+\.[00-12]{2}\.[00-31]{2}+\-[000-999]{3}+\.[00-99]{2}"
title="YY.MM.DD-000.00"
value="" />
<button type="submit">
submit
</button>
</form>
我似乎无法接受它。它似乎拒绝我给出的任何输入,包括坏的和可能的好的。
任何人都可以帮我找出原因吗?
答案 0 :(得分:1)
这是因为你的正则表达式中有+
个。不知道你想要什么,但如果你删除那些它的工作原理。那些加号使你的正则表达式无效。
另一个问题是您转义的-
。这导致正则表达式不能正常工作:
pattern="[00-99]{2}\.[00-12]{2}\.[00-31]{2}-[000-999]{3}\.[00-99]{2}"
答案 1 :(得分:1)
你误解了字符组[...]
在正则表达式中的工作方式:它们定义了你可以输入的字符,因此你不需要重复它们,当你使用它们几个月和几天时,你确实需要更高的数字以及您将无法输入09
例如(9月或当月的第9天)。
所以你需要:
[0-9]{2}\.[0-9]{2}\.[0-9]{2}-[0-9]{3}\.[0-9]{2}
请注意,我还删除了+
量词,并且我没有转义-
,因为它只是字符组中的特殊字符。但是,它既可以使用也可以不使用。
你可以看到它here。