数字和空格的正则表达式为千分隔符

时间:2016-12-07 10:49:23

标签: regex regex-lookarounds regex-greedy

这个正则表达式应该允许我输入带有空格的数字作为千位分隔符,但是一些如何接受字母和特殊字符。有人可以帮我解决正则表达式的错误:

reg = new RegExp("^(?:\s*([0-9]* [0-9]{3})\s*)*$||[0-9]*");

2 个答案:

答案 0 :(得分:2)

OR的分组似乎不正确(另外,使用|,而不是||)。

试试这个

   new RegExp(
    "^("  //start of line
    + "(?:" // number with thousands separator
      + "[0-9]{1,3}" //1..3 digits once 
      + "(?: [0-9]{3})*?" //exactly 3 digits, preceded by space, any number of times
    + ")"
    + "|(?:" // or just number 
      + "[0-9]+" //any number of digits without spaces
    + ")"
    + ")$");

根据您的需要,您可以允许或拒绝非三位数的部分。

答案 1 :(得分:0)

我认为您可以大大简化该正则表达式。

^[0-9 ]+$

这匹配带或不带空格的数字作为分隔符。但请注意,它将匹配任何地方的空间(不仅仅是千位分隔符)。虽然调整它应该很容易。

编辑:这是另一个强制空格分隔数字中数千的替代方案。

^[0-9]{1,3}()\s?([0-9]{3}\s?)+$