正则表达式:重复字符串后检索数字

时间:2015-11-11 11:02:09

标签: javascript regex

说我有一个字符串:

\foo\junk\f0\morejunk\

如何使用正则表达式从中提取'f0'?我基本上只想匹配一个后跟一个数字的'f',而不会被以'f'开头的字符串捕获,后面没有数字。

我尝试了以下内容:

(?<=f)(\d*)

但这会卡在字符串中的第一个'f','foo'并且与'f0'的后一种情况不匹配。如何在lookbehind上放置一个量词来匹配我想要的字符串?

另一种选择可能是用'\'分隔符拆分字符串并尝试匹配每个分割,但这似乎没必要?

3 个答案:

答案 0 :(得分:2)

JavaScript正则表达式不支持后面的内容。您可以使用捕获组。也可以使用+代替*,因为*匹配0个或更多字符,而+将匹配前一个字符中的一个或多个。

var str='\\foo\\junk\\f0\\morejunk\\';
var res=str.match(/\\f(\d+)\\/)[1];
alert(res);

更新:如果您想匹配整个字符串,那么只需使用/f\d+/无需捕获组

var str='\\foo\\junk\\f0\\morejunk\\';
var res=str.match(/\\(f\d+)\\/)[1];
alert(res);

答案 1 :(得分:1)

为什么不简单:

/(f\d+)/

它匹配f后跟一个或多个数字。结果在第1组中。

答案 2 :(得分:0)

var string = '\\foo\\junk\\f0\\morejunk\\';
var expression = /\\(f(\d+))\\/;
var matches_array = string.match(expression);