为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式为何取到的是两个值?

正则表达式为何取到的是两个值?

慕田峪7331174 2019-02-27 18:49:57
代码如下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);


查看完整回答
反对 回复 2019-03-04
?
潇湘沐

TA贡献1816条经验 获得超6个赞

关于正则表达式可以看下司徒正美的文章:JavaScript 正则表达式

题主正则表达式中使用了“捕获分组(分组的一种类型,相对于非捕获分组)”,所以匹配结果除了整个正则表达式的匹配内容之外,还包括捕获到的分组内容,举个例,看图:

https://img1.sycdn.imooc.com//5c7cacb60001424703460115.jpg

至于要取值,在匹配成功的情况下,match() 返回的结果是个数组,第 0 个元素是整个正则表达式的匹配内容,往后依次是各个分组匹配的内容(按括号先后顺序),而匹配不成功的情况下,返回 null,所以取值表达式可以这样写

const value = (s.match(re) || [])[1];

如果 value 值为 undefined 则表示匹配不成功(成功的情况下就算没有匹配的字符也会是空字符串而不会是 undefined)。


查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 854 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号