只允许数字、带点号的数字、和符号 & 和空格的正则表达式。

3

我需要一个正则表达式,只允许数字、空格、精度为2的小数和 & 符号。

这个正则表达式将用于检查输入,允许多个数字以 & 符号分隔,并且可以在它们之间有一个可选的空格(但最多只能有一个)。以下是我尝试过的,由于我对正则表达式的理解不够好,它们工作得非常差。

^(?=.*[0-9])[ &.0-9]+$

但是它的效果不好。

因为诸如&&&&&&1之类的东西将通过检查。

也尝试了像这样的东西,但效果也很差

^([0-9]{1,}[.]{0,1}[0-9]{0,2}[ ]{0,1}+[&]{0,1}[ ]{0,1})*?$

以下是我期望的样例:

12 --->(通过)

12.12 --->(通过)

12 & 129.12 & 11 --->(通过)

12 & 129. & 11 --->(不应该通过)

12 & .129 --->(不应该通过)

12 & 129..1(不应该通过)

12 & 129.111(不应该通过)

&&&1(不应该通过)

.......

提前致谢。

1个回答

1
为了考虑到空格,你可以使用?使其可选。
你可以使用一个重复的模式匹配2个可选的空格和一个“&”符号:
^\d+(?:\.\d{2})?(?: ?& ?\d+(?:\.\d{2})?)*$

解释

  • ^ 字符串开始位置
  • \d+(?:\.\d{2})? 匹配1个或多个数字,可选地匹配一个点和2个数字
  • (?: 非捕获组
    • [ ]?&[ ]? 匹配一个可选的空格(为了清晰使用了 [ ]),& 和一个可选的空格
    • d+(?:\.\d{2})? 匹配1个或多个数字,可选地匹配一个点和2个数字
  • )* 关闭非捕获组并重复0次或多次以允许单个条目
  • $ 字符串结束位置

正则表达式演示


@JohnyL 那是因为格式问题。让我更新一下。 - The fourth bird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接