RegEx强制验证5.3格式的浮点值(即12345.123)

时间:2013-08-29 22:22:31

标签: regex

我正在尝试创建一个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不太满意并且完全依赖于在线搜索和结合结果,所以非常感谢任何帮助!

由于 麦克

6 个答案:

答案 0 :(得分:1)

^([A-Za-z]+|\d{1,9}|\d{5}\.\d{3})$

Regular expression visualization

Edit live on Debuggex

答案 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}))$