Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式,仅允许数字、带点的数字,&;和空间_Regex - Fatal编程技术网

Regex 正则表达式,仅允许数字、带点的数字,&;和空间

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})*?$

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

此正则表达式将用于检查允许多个数字以&sign分隔的输入,并且其间可以有空格(可选,但最多一个)。以下是我尝试过的,由于我对正则表达式的理解很差,它们工作得很差

^(?=.*[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})?)*$
解释

  • ^
    字符串的开头
  • \d+(?:\。\d{2})?
    匹配1+个数字,也可以选择匹配一个点和2个数字
  • (?:
    非捕获组o
    • []?&[]?
      匹配可选空格(为清晰起见使用
      []
      )、
      &
      和可选空格
    • d+(?:\。\d{2})?
      匹配1+个数字,也可以选择匹配一个点和2个数字
  • )*
    关闭非捕获组并重复0多次以允许单个条目
  • $
    字符串结尾

@JohnyL,这是由于格式问题。让我更新一下。