1

我用谷歌搜索了很多,但我被卡住了。

HTML5 中有一个很酷的东西,必需的模式。它非常适合电子邮件/电话/日期验证。我在我的小项目中使用它来检查数字。我需要的是一个模式:

YYYY.ordernumber

订单号可以是从 1 到 1000000 的任何数字。

我试图YYYY.MM为我的案例修改一些模式,但没有运气。我输入的任何内容都没有通过验证。

有人可以帮忙吗?

4

1 回答 1

5

更新:添加了前瞻以确保“订单号”> 0(感谢M42在评论中的评论)。

您可以将这两个属性与您的<input>:

pattern="^[0-9]{4}\.(?!0+$)([0-9]{1,6}|1000000)$"
required

例如

<input type="text" placeHolder="YYYY.ordernumber" title="YYYY.ordernumber"
       pattern="^[0-9]{4}\.(?!0+$)([0-9]{1,6}|1000000)$" required />

另请参阅这个简短的演示


正则表达式的简短解释:

                  ^[0-9]{4}\.(?!0+$)([0-9]{1,6}|1000000)$    _____________
                  ^\______/\/\_____/ \________/\______/ ^___|match the end|
                  |    |    |   |_(*2)    |_       |_____   |of the string|
           _______|    |    |____           |            |
 _________|__   _______|_____   _|______   _|________   _|______
|match the   | |match exactly| |match a | |match 1 to| |or match|
|beggining of| |4 digits     | |dot (*1)| |6 digits  | |1000000 |
|the string  |

(*1): '.' is a special character in regex, so it has to be escaped ('.').
(*2): This is a negative lookahead which does consume any characters, but looks ahead and makes sure that the rest of the string in not consisted of zeros only.


只是为了完整起见
我必须指出[0-9]匹配数字 0-9 的事实。如果您还需要匹配其他数字字符,例如东方阿拉伯数字 ( ),则可以改用。٠١٢٣٤٥٦٧٨٩\d

于 2013-06-12T09:58:31.823 回答