我正试图找到一种方法来提取abc/
紧跟/
之后以及任何其他字母,数字或标点符号之前出现的数字。
E.g:
abc/134567/something
应返回 1234567
abc/1234567?foo=bar
仍应仅返回 1234567
blah/1234/abc/678
只应返回 678 ,因为我只查找成功的数字abc/
我知道有两种选择:正则表达式或子串匹配。
为了执行子字符串匹配,我需要索引点,但我只是在做一个indexOf("abc/")
,因为它只返回第一个字母的索引 - a - 它可能出现在字符串的其他地方
使用正则表达式我一直在努力,因为我发现搜索字母和斜杠的混合似乎会导致它返回null。
那么最好的方法是什么?
答案 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)
您将在Javascript中使用匹配的组提取:
var myRegexp = /abc\/(\d+)(?:$|\D)/g;
var match = myRegexp.exec(inputString);
var result=match[1]; // the number after abc/
在另一个正则表达引擎而不是JavaScript中,可以使用前瞻和后瞻。但在JS中,禁止使用外观。 :-(。所以我们必须使用这个,有点复杂,方式。
答案 3 :(得分:0)