JavaScript match()正则表达式无法按预期工作

时间:2016-06-19 10:25:50

标签: javascript regex match

我尝试使用JavaScript match()函数从字符串中获取三个数值。

字符串示例:var $numbers = $onclick.match(/(\d*),(\d*),(\d)/); var first = $numbers[0] // Should be 14754572 var second = $numbers[1] // Should be 782339 var third = $numbers[2] // Should be 2

这是我正在使用的JavaScript,但没有结果:

{{1}}

我猜测正则表达式不行......

2 个答案:

答案 0 :(得分:4)

正则表达式很好,只是你对匹配数组的索引不正确。第一个条目[0]是匹配的完整文本(在您的情况下为"14754572,782339,2")。然后,您在[1][2][3]中会定义您已定义的捕获组。所以你只需要调整这些索引。



var $onclick = "doSomething(14754572,782339,2,'')";
var $numbers = $onclick.match(/(\d*),(\d*),(\d)/);
console.log($numbers[1]); // 14754572 
// Note ------------^^^
console.log($numbers[2]); // 782339
// Note ------------^^^
console.log($numbers[3]); // 2
// Note ------------^^^




只是FWIW,正则表达式不能容忍可选空格,因此您可以考虑在其中添加\s*;另外,我可能会更新它以要求领先(

// Leading ( ------------------vv
var $numbers = $onclick.match(/\(\s*(\d*)\s*,\s*(\d*)\s*,\s*(\d)/);
// Optional whitespace ----------^^^-----^^^-^^^-----^^^-^^^

答案 1 :(得分:0)

如果您记录$ number,您将看到它评估为正则表达式的所有匹配项。因此,您需要做的是选择索引1,2和3而不是0,1和2:

SELECT T2.* FROM table_2 T2 
LEFT JOIN table_1 T1 ON T1.table_2_id = T2.id 
WHERE T1.reg_no = ?;