我将需要一个仅允许数字,空格,精度为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(不应通过)
.......
非常感谢
答案 0 :(得分:1)
要考虑空格,您可以使用?
您可以使用匹配2个可选空格和&符号的重复模式:
^\d+(?:\.\d{2})?(?: ?& ?\d+(?:\.\d{2})?)*$
说明
^
字符串的开头\d+(?:\.\d{2})?
匹配1个以上的数字,并可选地匹配一个点和2个数字(?:
非捕获组
[ ]?&[ ]?
匹配可选空格(为清楚起见,使用[ ]
),&
和可选空格d+(?:\.\d{2})?
匹配1个以上的数字,并可选地匹配一个点和2个数字)*
关闭非捕获组并重复0次以上以允许一次输入$
字符串结尾