为什么这个正则表达式几乎会返回一个包含两个字符串的数组,可以用作数字,正数或负数,但是第二个字符串的负号是否会被删除?我可以使用另一行或两行代码来考虑解决方法,但是真的希望让正则表达式做得正确。提前致谢。 (顺便说一句,这里的想法是字符串可以是" 123,321"或" 12.3,321"或" 123 32.1"或任何合理的格式两个实数或整数。)
s="-123.23, -456.0";
s.match(/^([+-]?\d*\.\d*)\W+([+-]?\d*.\d*)$/);
// - > [" -123.23,-456.0"," -123.23"," 456.0"]
答案 0 :(得分:1)
尝试:[^\w-]+
代替\W+
s = "-123.23, -456.0";
s.match(/^([+-]?\d*\.\d*)[^\w-]+([+-]?\d*.\d*)$/)
答案 1 :(得分:1)
您可以考虑只匹配数字......而不是尝试匹配整行。
var r = "-123.23, -456.0".match(/[+-]?\d+(?:\.\d+)?/g);
console.log(r); //=> [ '-123.23', '-456.0' ]