查找包含字母和标点符号的特定字符串后面的数字

时间:2017-09-04 14:35:42

标签: javascript regex string substring

我正试图找到一种方法来提取abc/紧跟/之后以及任何其他字母,数字或标点符号之前出现的数字。

E.g:

abc/134567/something应返回 1234567

abc/1234567?foo=bar仍应仅返回 1234567

blah/1234/abc/678只应返回 678 ,因为我只查找成功的数字abc/

我知道有两种选择:正则表达式或子串匹配。

为了执行子字符串匹配,我需要索引点,但我只是在做一个indexOf("abc/"),因为它只返回第一个字母的索引 - a - 它可能出现在字符串的其他地方

使用正则表达式我一直在努力,因为我发现搜索字母和斜杠的混合似乎会导致它返回null。

那么最好的方法是什么?

4 个答案:

答案 0 :(得分:1)

您可以使用此regexpression:

var rgx = new RegExp("abc\/([0-9]+)","gi");

然后:

var m = rgx.exec("abc/1234567?foo=bar");
console.log(m[0]);

在评论后编辑

答案 1 :(得分:0)

您可以使用正则表达式并搜索abc/和后续数字。



var array = ['abc/134567/something', 'abc/1234567?foo=bar', 'blah/1234/abc/678'];

console.log(array.map(s => s.match(/abc\/(\d+)/)[1]));




答案 2 :(得分:0)

我们接受具有abc/的字符串,其后是整数,作为匹配组,字符串的结尾或后面的某些非数字符号。< / p>

abc\/(\d+)(?:$|\D)

test

您将在Javascript中使用匹配的组提取:

var myRegexp = /abc\/(\d+)(?:$|\D)/g; 
var match = myRegexp.exec(inputString);
var result=match[1]; // the number after abc/

在另一个正则表达引擎而不是JavaScript中,可以使用前瞻和后瞻。但在JS中,禁止使用外观。 :-(。所以我们必须使用这个,有点复杂,方式。

答案 3 :(得分:0)

你是否喜欢这样的事情:

^(.*\/)(\d+)(.*)

第二组会在斜线后面给你数字。

Look at the regex here