我有此文字
transaction A2999 num 111 from b123 c 6666666 t d 7777
我需要获取c
和t d
之后的6666666
和7777
之后的数字(请注意字符之前和之后的空格)
我尝试过
str.match(/\ c (\d+)/);
这给了我
Array(2)
0: " c 6666666"
1: "6666666"
我想我可以为每个数字运行相同的正则表达式两次,并获取数组中的最后一个col,但是我不确定它是最干净的方法...对我来说似乎不太乐观(就正则表达式而言,我是一个)
答案 0 :(得分:1)
答案 1 :(得分:1)
(\d+)\st\sd\s(\d+)$
var text = "transaction A2999 num 111 from b123 c 6666666 t d 7777"
var regex = /(\d+)\st\sd\s(\d+)$/
matches = text.match(regex);
console.log(matches);
// matches[1] = 6666666
// matches[2] = 7777
答案 2 :(得分:1)
将正则表达式中的c
更改为(?:c|t d)
,从而得到正则表达式/ (?:c|t d) (\d+)/
。
(?:...)
与普通组(...)
相同,但未捕获结果。因此,该组也称为non-capturing group。
我还为正则表达式设置了全局标志(g
),以允许在一个字符串中进行多个匹配。在 while 语句中使用RegExp exec method时,还需要避免无限循环。
var str = 'transaction A2999 num 111 from b123 c 6666666 t d 7777',
regexp = /\ (?:c|t d) (\d+)/g,
match;
while (match = regexp.exec(str)) {
console.log(match);
}