我有这个字符串:
包含两个子字符串的字符串:
srt=60389052 - OLGA YANETH PARRA PINILLA8390507 - VICENTE ARROYAVE ARANGO
所以,我知道如何找到第一个子串(数字+字)和第二个:
w1 = srt.match (/^\d+\D+)/); //matches = 60389052 - OLGA YANETH PARRA PINILLA
w2 = srt.match (/\d+\D+$/); //matches = 8390507 - VICENTE ARROYAVE ARANGO
没关系,但是如果字符串更长,我就有问题要匹配第二个子字符串,例如:
包含三个子字符串的字符串:
srt=60389052 - OLGA YANETH PARRA PINILLA8390507 - VICENTE ARROYAVE ARANGO777777 GERMAN CASTRO
我想找到这个:
8390507 - VICENTE ARROYAVE ARANGO
字符串有时只有两个子字符串,有些人有三个所以我必须总是找到第二个,无论字符串是2还是3个子字符串,我的意思是如果我在较大的字符串中使用w2不匹配我想要的子字符串,因为它会将最后一个子字符串发现为三个而不是第二个。
答案 0 :(得分:3)
进行全局匹配并通过索引获取所需的子字符串(从0
开始):
var matches = str.match(/\d+\D+/g);
console.log(matches[1]); // "8390507 - VICENTE ARROYAVE ARANGO"
答案 1 :(得分:1)
我知道正则表达式不是最优雅的,但由于Javascript不支持lookbehind,这可能不是那么糟糕:
str.match(/^\d+\D+\d+\D+/)[0].replace(/^\d+\D+/,'');
此外,如果你不打算'匹配()' - 这也比上面更好:
str.replace(/\d+\D+(\d+\D+).*/,'$1');
干杯。
答案 2 :(得分:0)
您只需使用global flag:
即可console.log(srt.match(/\d+\D+/g))