我想从这样的字符串中获取脚本的名称:
var text = '<script src="scripts/044c7c5e.vendor.js"></script><script src="scripts/fa9f85fb.scripts.js"></script>'
我想检索第二个脚本名称,即 fa9f85fb.scripts 。如何使用javascript正则表达式实现这一目标?
我写的是这样的:
text.match(new RegExp(/<script src="scripts\/[(.*?)]\.scripts\.js"><\/script>/), 'g')[0]
但它返回整个字符串。
答案 0 :(得分:4)
你的图案抓取有点偏; [(.*?)]
应该只是(.*?)
:
/<script src="scripts\/(.*?)\.scripts\.js"><\/script>/g
将是整个正则表达式,无需调用RegExp
类构造函数。匹配的字符串存储在索引0
中。然后,从索引1
开始存储各个段。
text.match( /<script src="scripts\/(.*?)\.scripts\.js"><\/script>/g )[1]
答案 1 :(得分:1)
试试/\w+.scripts(?=.js)/
?
参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions
你的比赛模式有点模糊。我可以简单地使用/fa9f85fb.scripts/来匹配它。