使用正则表达式

时间:2015-06-17 22:39:31

标签: javascript regex

为什么这个正则表达式几乎会返回一个包含两个字符串的数组,可以用作数字,正数或负数,但是第二个字符串的负号是否会被删除?我可以使用另一行或两行代码来考虑解决方法,但是真的希望让正则表达式做得正确。提前致谢。 (顺便说一句,这里的想法是字符串可以是" 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"]

2 个答案:

答案 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' ]