为什么下面的JavaScript正则expression式不能工作?
s='<img src="http://25.media.tumblr.com/xxxxx/tumblr_xxx_1280.jpg">' p=/(?=<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g s.match(p) # return null
但是,以下工作:
p=/(<img src=")http:\/\/\d*\.media\.tumblr\.com\/\w*\/?tumblr_\w*_\d{3,4}\.\w{3,3}(?=")/g
?=:积极的前瞻。 在主expression式之后匹配一个组,而不在结果中包含它。
你正在寻找一个积极的lookbehind,因为你正试图匹配你的主要expression式之前的东西,如果你只是想提取url 。
p=/(?<=img src=.... ^ positive look-behind
编辑:
他们不支持JavaScript(如注释所示),所以你不得不采取欺骗手段。
但是,如果您尝试提取URL,则可能更容易将其分成两步,获取整个匹配项,然后删除<img src=...
部分。
你的第一个正则expression式不能匹配,因为它使用零宽度预读,与之后的模式相矛盾。
正则expression式不能匹配"<img src="
并且在string中的相同位置也匹配例如"http://25"
。
- Chrome✗和Firefox中的ES6 / Unicode正则expression式中的逻辑或序列✓
- 如何使用Angular和Node Express将CSRF与Redis Session配合使用,会话过期后如何重置会话信息和CSRF?
- 当设置contentType时,jquery ajax不工作
- TypeError:无法在Object.handle中读取未定义属性'csrfSecret' – 使用Node.js
- 如何使用joi(Node.js的validation框架)validation对象的数组?
- Xregexp javascript可选命名组由空格分隔
- Node.js + Angular = Uncaught ReferenceError:require没有被定义
- 节点正则expression式分析器中的内存泄漏?
- 如何使用正则expression式匹配高价值的Unicode字符?