我尝试使用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}}
我猜测正则表达式不行......
答案 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 = ?;