正则表达式,仅允许数字,带点号的数字,&和空格

时间:2019-07-11 06:18:03

标签: regex

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

此正则表达式将用于检查输入是否允许多个以&符号分隔的输入,并且两者之间可以有空格(可选,但最大为1)。以下是我尝试过的操作,由于我对正则表达式的了解不足,因此它们的效果非常差。

^(?=.*[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 个答案:

答案 0 :(得分:1)

要考虑空格,您可以使用?

您可以使用匹配2个可选空格和&符号的重复模式:

^\d+(?:\.\d{2})?(?: ?& ?\d+(?:\.\d{2})?)*$

说明

  • ^字符串的开头
  • \d+(?:\.\d{2})?匹配1个以上的数字,并可选地匹配一个点和2个数字
  • (?:非捕获组
    • [ ]?&[ ]?匹配可选空格(为清楚起见,使用[ ]),&和可选空格
    • d+(?:\.\d{2})?匹配1个以上的数字,并可选地匹配一个点和2个数字
  • )*关闭非捕获组并重复0次以上以允许一次输入
  • $字符串结尾

Regex demo