'<img abc 123 width="168" height="300"'.match(/(?=(width="))168/)
我期望從一個字串中 取出其中位於width="123" 中的123
我先說一下我能想到的。但是這樣的操作都感覺怪怪的。有沒有酷炫的方法
使用replace然後在回呼裡面取得;
'<img abc 123 width="168" height="300"'.replace(/width="\d+"/,function(a){console.log(a)})
或是如同,@ars_qu 那樣
'<img abc 123 width="168" height="300"'.match(/width="\d+"/)[0].match(/\d+/)[0]
js 對斷言支援很差,直接用配對組就好了:
JS不支援反向預查
它目前支援零寬斷言的正向預查,即找出屁股後跟著指定詞(或其他條件)結尾的文本。 --JS目前支援;
你問題中的需求想要找 前面有指定字(或其他條件)的文字。 --JS目前不支援.
P.S.: 即使支持,你的寫法也不對! 如果你想找width後面的數字,需要用的是反向預查,正確的寫法(在C#或PHP中)是
正向預查/(?。 注意多了一個小於號。
/(?<=width)d+/
。 注意多了一个小于号。如果你想找width前面的数字,比如字符串是这样的"168width",这是用到的是正向预查,写法为
/d+(?=width)/
如果你想找width前面的數字,例如字串是這樣的"168width",這是用到的是,寫法為
/d+(?=width)/
。標準做法 - 捕獲組
🎜使用正規的捕捉是你這種場景下的最優方法。 🎜雷雷
直接width=".*?"然後符合數字不行嗎
js好像不支援部分正規則,例如零寬斷言....