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

代码如下

match(/src="([^"]*)"/)

取到的是

src="http://图片地址",http://图片地址

请问该如何只获取http://图片地址这一部分呢?正则该怎么写?非常感谢!~


慕田峪7331174
浏览 855回答 2
2回答

Helenr

var s = 'src="http://图片地址"';var re = /src="([^"]*)"/;s.match(re);console.log(RegExp.$1);

潇湘沐

关于正则表达式可以看下司徒正美的文章:JavaScript 正则表达式题主正则表达式中使用了“捕获分组(分组的一种类型,相对于非捕获分组)”,所以匹配结果除了整个正则表达式的匹配内容之外,还包括捕获到的分组内容,举个例,看图:至于要取值,在匹配成功的情况下,match() 返回的结果是个数组,第 0 个元素是整个正则表达式的匹配内容,往后依次是各个分组匹配的内容(按括号先后顺序),而匹配不成功的情况下,返回 null,所以取值表达式可以这样写const value = (s.match(re) || [])[1];如果 value 值为 undefined 则表示匹配不成功(成功的情况下就算没有匹配的字符也会是空字符串而不会是 undefined)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript