我用谷歌搜索了很多,但我被卡住了。
HTML5 中有一个很酷的东西,必需的模式。它非常适合电子邮件/电话/日期验证。我在我的小项目中使用它来检查数字。我需要的是一个模式:
YYYY.ordernumber
订单号可以是从 1 到 1000000 的任何数字。
我试图YYYY.MM
为我的案例修改一些模式,但没有运气。我输入的任何内容都没有通过验证。
有人可以帮忙吗?
我用谷歌搜索了很多,但我被卡住了。
HTML5 中有一个很酷的东西,必需的模式。它非常适合电子邮件/电话/日期验证。我在我的小项目中使用它来检查数字。我需要的是一个模式:
YYYY.ordernumber
订单号可以是从 1 到 1000000 的任何数字。
我试图YYYY.MM
为我的案例修改一些模式,但没有运气。我输入的任何内容都没有通过验证。
有人可以帮忙吗?
更新:添加了前瞻以确保“订单号”> 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