JavaScript正则表达式匹配不在特定属性中的任何内容



假设我想匹配网址,这些网址不在html标签中的一组特定属性中。

<span cstm1="url1" cstm2="url2" data-x="url3">url4</span>

我只想匹配 url3 和 url4,所以我尝试了类似的东西:

/(?!(?:cstm1|cstm2)=["']?)(url_regex)/g

问题是负面的展望断言需要一些东西在它之前,我不能确保这个数字不能在引号内,因为它仍然有效,所以我没有任何合理的理由来支撑这个消极的前瞻断言。

如果我能够在断言背后使用负面外观,那将非常容易,但我使用的是不支持它的 javascript,所以我有点卡住了,并寻求有关如何实现这一目标的帮助。

我寻找仅正则表达式的解决方案。

编辑:

我用来查找网址的网址正则表达式:

((?:(?:https?)://)(?:S+(?::S*)?@)?(?:(?!10(?:.d{1,3}){3})(?!127(?:.d{1,3}){3})(?!169.254(?:.d{1,3}){2})(?!192.168(?:.d{1,3}){2})(?!172.(?:1[6-9]|2d|3[0-1])(?:.d{1,3}){2})(?:[1-9]d?|1dd|2[01]d|22[0-3])(?:.(?:1?d{1,2}|2[0-4]d|25[0-5])){2}(?:.(?:[1-9]d?|1dd|2[0-4]d|25[0-4]))|[(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]))]|localhost|(?:xn--[a-z0-9-]{1,59}|(?:(?:[a-zu00a1-uffff0-9]+-?){0,62}[a-zu00a1-uffff0-9]{1,63}))(?:.(?:xn--[a-z0-9-]{1,59}|(?:[a-zu00a1-uffff0-9]+-?){0,62}[a-zu00a1-uffff0-9]{1,63}))*(?:.(?:xn--[a-z0-9-]{1,59}|(?:[a-zu00a1-uffff]{2,63}))))(?::d{2,5})?(?:/[^"'()<>s]*)?)

在没有回头的情况下,您可以使用捕获组来提取结果。

/(?:cstm1|cstm2)=(['"]?)d+1|(bd+b)/ig

使用captured group #2进行比赛。

正则表达式演示

相关内容

最新更新