亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式為何取到的是兩個值?

正則表達式為何取到的是兩個值?

慕田峪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 關注
  • 804 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號