我正在尝试创建一个RegEx来验证我的输入表单字段之一,它允许字符值(即TBA或NA)或直接整数最多9位(这由字段限制vtype设置)或5.3格式,如12345.123或12345.001等。以下是我从搜索中编译的内容:
/^([A-Z])|([0-9]+)(\.([0-9]{1,2}))?$/i;
这似乎与Alpha和整数一致,但是当涉及到5.3格式时,我想使得像12345.1或12345.12这样的值无效并强制它只接受具有正确5.3格式的值,如“12345.123”
我对RegEx不太满意并且完全依赖于在线搜索和结合结果,所以非常感谢任何帮助!
由于 麦克
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用以下表达式:
^(?:[A-Z]+|[0-9]{1,9}|[0-9]{5}\.[0-9]{3})$
请注意,整个匹配使用(?:)
进行分组,以便此表达式仅匹配完整输入而不匹配部分文本。
因此,此表达式仅匹配大写字母[A-Z]+
。
或者它匹配9个完整数字[0-9]{1,9}
。
或者它匹配5位数后跟一个点.
,后跟三位数[0-9]{5}\.([0-9]{3})
。
<强> Regex 101 Demo 强>
答案 2 :(得分:0)
这是错误的部分:/^([A-Z])|([0-9]+)(.([0-9]{1,2}))?$/i;
。您基本上是说小数点后只允许一位或两位数。所以这就是:
/^([A-Z]+)$|^(\d+\.\d{3})$|^(\d{1,9})$/i;
示例here。
答案 3 :(得分:0)
所以你希望小数点左边有5个数字,右边有3个数字?
这个怎么样:
/^([A-Z]+)|([0-9]{1,9})|([0-9]{5}\.[0-9]{3})$/i
如果单独指定“1-9数字”和“5.3十进制”格式,我会发现更清楚。在模式后添加{n}
(花括号)表示您要匹配该模式的n次出现。
注意:我没有测试过上述内容。
答案 4 :(得分:0)
试试这个:
/^(?:[A-Z]+|[0-9]{5}(?:[0-9]|\.)[0-9]{3}|[0-9]{1,8})$/i;
答案 5 :(得分:0)
试试这个:
^([A-Z]+|[0-9]{1,9}|(\d{5}.\d{3}))$