'<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]
高洛峰2017-05-19 10:29:51
js 对断言支持很差,直接用匹配组就好了:
'<img abc 123 width="168" height="300"'.match(/width="(\d+)"/)[1]
習慣沉默2017-05-19 10:29:51
它目前支持零宽断言的正向预查,即找出屁股后跟着指定词(或其他条件)结尾的文本。 --JS目前支持;
你问题中的需求想要找 前面有指定词(或其他条件)的文本。 --JS目前不支持.
P.S.: 即使支持,你的写法也不对! 如果你想找width后的数字,需要用的是反向预查,正确的写法(在C#或PHP中)是/(?<=width)d+/
。 注意多了一个小于号。/(?<=width)d+/
。 注意多了一个小于号。
如果你想找width前面的数字,比如字符串是这样的"168width",这是用到的是正向预查,写法为 /d+(?=width)/
如果你想找width前面的数字,比如字符串是这样的"168width",这是用到的是
/d+(?=width)/
。标准做法 - 捕获组
🎜使用正则的捕获是你这种场景下的最优方法。🎜'<img abc 123 width="168" height="300"'.match(/width="(\d+)/)[1]; //输出168