限制表单输入变得混乱

时间:2016-11-15 10:03:09

标签: javascript php html

我正试图以我拥有的形式限制表单输入。特定输入是针对具有非常特定要求的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>

我似乎无法接受它。它似乎拒绝我给出的任何输入,包括坏的和可能的好的。

任何人都可以帮我找出原因吗?

2 个答案:

答案 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