Regex 正则表达式,仅允许数字、带点的数字,&;和空间
我需要一个正则表达式,它只允许数字、空格、精度为2的十进制数和&符号 此正则表达式将用于检查允许多个数字以&sign分隔的输入,并且其间可以有空格(可选,但最多一个)。以下是我尝试过的,由于我对正则表达式的理解很差,它们工作得很差Regex 正则表达式,仅允许数字、带点的数字,&;和空间,regex,Regex,我需要一个正则表达式,它只允许数字、空格、精度为2的十进制数和&符号 此正则表达式将用于检查允许多个数字以&sign分隔的输入,并且其间可以有空格(可选,但最多一个)。以下是我尝试过的,由于我对正则表达式的理解很差,它们工作得很差 ^(?=.*[0-9])[ &.0-9]+$ 但效果不好 因为&&&&&&1之类的东西会通过检查 我也尝试过类似的方法,但效果也很差 ^([0-9]{1,}[.]{0,1}[0-9]{0,2}[ ]{0,1}+[&]{0,1}[ ]{0,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(不应通过)
非常感谢您提前解释这些空格,您可以使用
?
您可以使用重复模式匹配2个可选空格和一个符号:
^\d+(?:\.\d{2})?(?: ?& ?\d+(?:\.\d{2})?)*$
解释
字符串的开头^
匹配1+个数字,也可以选择匹配一个点和2个数字\d+(?:\。\d{2})?
非捕获组o(?:
匹配可选空格(为清晰起见使用[]?&[]?
)、[]
和可选空格&
匹配1+个数字,也可以选择匹配一个点和2个数字d+(?:\。\d{2})?
关闭非捕获组并重复0多次以允许单个条目)*
字符串结尾$
@JohnyL,这是由于格式问题。让我更新一下。