0

我正在尝试创建一个正则表达式来验证我的输入表单字段之一,这将允许字符值(即 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 不是很好,完全依赖于在线搜索和组合结果,所以任何帮助都将不胜感激!

谢谢迈克

4

6 回答 6

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

正则表达式可视化

在 Debuggex 上实时编辑

于 2013-08-29T22:28:51.787 回答
1

您可以使用以下表达式:

^(?:[A-Z]+|[0-9]{1,9}|[0-9]{5}\.[0-9]{3})$

请注意,整个匹配是使用分组的,(?:)因此这个表达式只匹配完整的输入而不是部分文本。

所以这个表达式只匹配大写字母[A-Z]+

或者它匹配 9 个完整的数字[0-9]{1,9}

或者它匹配 5 个数字,后跟一个点.,后跟 3 个数字[0-9]{5}\.([0-9]{3})

正则表达式 101 演示

于 2013-08-29T22:37:02.900 回答
0

这是错误的部分:. 您基本上是说小数点后只允许一位或两位数字。所以这里是:/^([A-Z])|([0-9]+)(.([0-9]{1,2}))?$/i;

/^([A-Z]+)$|^(\d+\.\d{3})$|^(\d{1,9})$/i;

样品在这里

于 2013-08-29T22:28:59.257 回答
0

所以你希望小数点左边有 5 个数字,右边有 3 个?

这个怎么样:

/^([A-Z]+)|([0-9]{1,9})|([0-9]{5}\.[0-9]{3})$/i

如果分别指定“1-9 数字”和“5.3 十进制”格式,我发现会更清楚。在模式之后添加{n}(大括号)表示您要匹配该模式的 n 次出现。

注意:我没有测试过上述内容。

于 2013-08-29T22:29:53.920 回答
0

尝试这个:

/^(?:[A-Z]+|[0-9]{5}(?:[0-9]|\.)[0-9]{3}|[0-9]{1,8})$/i;
于 2013-08-29T22:33:53.607 回答
0

试试这个: ^([A-Z]+|[0-9]{1,9}|(\d{5}.\d{3}))$

于 2013-08-29T22:35:51.053 回答