这个正则表达式应该允许我输入带有空格的数字作为千位分隔符,但是一些如何接受字母和特殊字符。有人可以帮我解决正则表达式的错误:
reg = new RegExp("^(?:\s*([0-9]* [0-9]{3})\s*)*$||[0-9]*");
答案 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?)+$