Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Floating Point_Integer - Fatal编程技术网

Regex 正则表达式作用域太大

Regex 正则表达式作用域太大,regex,floating-point,integer,Regex,Floating Point,Integer,我已经创建了一个(大部分)工作正则表达式,它接受您可能使用的任何大于0或的数字 ^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{0,2})?|12(?:\.0{0,2})?)$ 请参阅和: 如果需要小数分隔符后的数字,请将{0,2}替换为{1,2}: ^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{1,2})?|12(?:\.0{1,2})?)$ 详细信息 ^-字符串的开头 (?=[^1-9]*[1-

我已经创建了一个(大部分)工作正则表达式,它接受您可能使用的任何大于0或的数字

^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{0,2})?|12(?:\.0{0,2})?)$
请参阅和:

如果需要小数分隔符后的数字,请将
{0,2}
替换为
{1,2}

^(?=[^1-9]*[1-9])0*(?:(?:\d|1[01])?(?:\.[0-9]{1,2})?|12(?:\.0{1,2})?)$
详细信息

  • ^
    -字符串的开头
  • (?=[^1-9]*[1-9])
    -一种正向前瞻,要求在任何字符(从
    1
    9
    的数字除外)后面有一个非零数字(从
    1
    9
  • 0*
    -任何0+前导零
  • (?:
    -启动非捕获组:
    • (?:\d|1[01])?(?:\[0-9]{1,2})
      -
      0
      11
      数字(可选匹配,请参见第一个右括号后的
      ),后跟可选的
      序列和1到2位数字
    • |
      -或
    • 12(?:\.0{1,2})
      -
      12
      可选后跟
      和1到2位数字
  • -非捕获组的结束
  • $
    -字符串结尾

您必须使用
12
的特殊情况,然后您可以将
[0-2]
更改为
[0-1]
。非常有用,谢谢。虽然它仍然接受0,但大部分都有效。我怎么也拒绝0?@JoeCoyle对不起,我完全错过了那部分。将第一个
[0-9]
替换为
[1-9]
。我更新了所有的演示和解释。谢谢,接近了!我可能应该在问题中更清楚地说明这一点,但我也想包括0-1之间的数字,例如0.25。理想情况下,我们也可以考虑像.25这样的格式,但这是可选的。然后您需要
^(?=[^1-9]*[1-9])0*(?:(?:\d | 1[01])?(?:\.[0-9]{0,2})?\124; 12(?:\.0{0,2})$,
,请参见“优秀”-工作完美。太感谢你了!