说我有一个字符串:
\foo\junk\f0\morejunk\
如何使用正则表达式从中提取'f0'?我基本上只想匹配一个后跟一个数字的'f',而不会被以'f'开头的字符串捕获,后面没有数字。
我尝试了以下内容:
(?<=f)(\d*)
但这会卡在字符串中的第一个'f','foo'并且与'f0'的后一种情况不匹配。如何在lookbehind
上放置一个量词来匹配我想要的字符串?
另一种选择可能是用'\'分隔符拆分字符串并尝试匹配每个分割,但这似乎没必要?
答案 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);