所以这是我的javascript正则表达式:
/src\s*=\s*"([^"]+)"/g;
我使用regexpal.com以及regexr.com来帮助我验证它是否正常工作(匹配我想要的所有元素)。这是我的测试输入:
未转义的正则表达式:
src\s*=\s*"([^"]+)"
测试字符串:
<html>
<head>
<title></title>
</head>
<body>
<p><img src="bart.jpg" style="width:100px; height:100px" /><img src="cover.jpg" style="width:100px; height:100px" /></p>
</body>
</html>
它会正确地突出显示所有src="X"
,所以我认为它可以正常工作。
现在这就是我运行代码的方式:
var matches = RegexHelper.getImgSourceRegEx().exec(dataString);
我得到的匹配元素如下:
0: "src="bart.jpg"" // correct
1: "bart.jpg"
我有点困惑,为什么这不给我:
0: "src="bart.jpg""
1: "src="cover.jpg""
答案 0 :(得分:2)
exec
如何使用g
标志。这是一个国家体系。
第一次调用exec
时,它将返回第一个匹配项,并完成子模式。
第二次打电话给你,你将获得第二次比赛。
一旦你的比赛用完,它将返回false,然后回到第一场比赛准备好接下来的比赛。
基本上,只需继续调用exec
,也许是在循环中。
如果您只想要完整匹配,请尝试dataString.match(RegexHelper.getImgSourceRegEx())
。
答案 1 :(得分:0)
更改您的代码如下:
删除正则表达式中的括号以删除内部匹配(bart.jpg
),
var reg = /src\s*=\s*[^"]+"/g;
并重复拨打exec
以获得下一场比赛。