代码如下match(/src="([^"]*)"/)取到的是src="http://图片地址",http://图片地址请问该如何只获取http://图片地址这一部分呢?正则该怎么写?非常感谢!~
2 回答
Helenr
TA贡献1780条经验 获得超4个赞
var s = 'src="http://图片地址"';
var re = /src="([^"]*)"/;
s.match(re);
console.log(RegExp.$1);
潇湘沐
TA贡献1816条经验 获得超6个赞
关于正则表达式可以看下司徒正美的文章:JavaScript 正则表达式
题主正则表达式中使用了“捕获分组(分组的一种类型,相对于非捕获分组)”,所以匹配结果除了整个正则表达式的匹配内容之外,还包括捕获到的分组内容,举个例,看图:

至于要取值,在匹配成功的情况下,match() 返回的结果是个数组,第 0 个元素是整个正则表达式的匹配内容,往后依次是各个分组匹配的内容(按括号先后顺序),而匹配不成功的情况下,返回 null,所以取值表达式可以这样写
const value = (s.match(re) || [])[1];
如果 value 值为 undefined 则表示匹配不成功(成功的情况下就算没有匹配的字符也会是空字符串而不会是 undefined)。
添加回答
举报
0/150
提交
取消
