我正在研究基于材料设计精简插件的表单。以下链接:https://getmdl.io/components/index.html#textfields-section
我在表单验证方面遇到问题,尤其是正则表达式。
有我的简单形式:
<form action="#">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="text" pattern="-?[0-9]*(.[0-9]+)?" id="sample4">
<label class="mdl-textfield__label" for="sample4">Number...</label>
<span class="mdl-textfield__error">Input is not a number!</span>
</div>
</form>
我希望有这样的验证模式:
- 输入金额不是字符串(只有数字 0-9(
- 分隔符必须为 ",">
- 我最多需要 2 位小数
- 我不能接受任何字符,除了数字 0-9 和 ",">
- 输入金额不能小于0
- 输入金额必须从数字开始
你能帮我这些正则表达式吗?我对此没有足够的了解,只需要现成的模式。其余的验证我将通过javascript进行。
谢谢!
^(?:[1-9][0-9]*?,?[0-9]{0,2}|[0](?:,[0-9]{0,2})?|)$
这似乎符合您提供的所有标准,你可以用这个演示来测试它
它由 3 个"部分"组成,由 3 个不同匹配|
的基本测试分开
-
[1-9][0-9]*?,?[0-9]{0,2}
- 如果输入是从 1-9 开始的数字,后跟 0-9 的数字数量(或缺失(,然后是可选的,
+ 0-2 从 0-9 的数字,则匹配 -
[0](?:,[0-9]{0,2})?
- 如果输入为 0,后跟可选,
和 0-9 中的 0-2 个数字,则匹配 - (最后
|
和)$
之间缺少任何内容( - 如果输入为空,则匹配
编辑:这是一个不允许最后一个字符成为,
https://regex101.com/r/dPM95O/4 的版本