我有一大堆JavaScript代码段,每个代码段包含一行代码:
function('some string without numbers', '123,71')
我希望得到一个正则表达式来从第二个参数中提取数字。第二个参数可以包含任意数量的逗号分隔数字(包含零数字),因此以下都是有效的:
''
'2'
'17,888'
'55,1,6000'
...
正则表达式'(?:\d+|,)*'
成功匹配引用的数字,但我不知道如何匹配每个数字。在\d+
周围放置一个捕获组似乎捕获了最后一个数字(如果有一个存在 - 如果第二个参数只是''
则它不起作用),但是没有其他数字
答案 0 :(得分:1)
在您的情况下,您可以匹配并捕获单引号内的数字,然后用逗号分隔:
var s = "function('some string without numbers', '123,71')";
var res = s.match(/'([\d,]+)'/) || ["", ""];
console.log(res[1].split(','));
/'([\d,]+)'/
正则表达式将匹配'
,然后是1位数字或逗号(将该值放入第1组),然后是结束'
。
如果要全局运行正则表达式,请使用
var s = "function('some string without numbers', '123,71')\nfunction('some string without numbers', '13,4,0')";
var rx = /'([\d,]+)'/g;
var res = [], m;
while ((m=rx.exec(s)) !== null) {
res.push(m[1].split(','));
}
console.log(res);
答案 1 :(得分:0)
如果您在变量x
中有数字,请执行以下操作:
var x = '55,1,6000';
然后使用它来获得数字列表:
var array = x.split(',');
如果你可以在逗号之前/之后有一些空格,那么使用:
var array = x.split('\s*,\s*');
或类似的东西。
有时候更容易匹配你不想要的东西并将其拆分。