我正在制作一个正则表达式,如果它是真的,会进行一些字符串操作,但目前我的代码经常被触发,所以我需要它更具体。正则表达式真的不是我强大的套件 - 我目前的正则表达式是
if(/(?!<a(.*?))<img src="(.*?[^<])" data-special="(t:).*"/.test(str)) {
// do this code
}
我的正则表达式需要找到具有某个属性值的img元素,这些元素值不会被包含在链接中的href /包围。例如,我希望它捕获以下内容:
<img src="http://example.com/image.jpg" data-special="t:https://www.twitter.com" />
并将其替换为
<a href="http://example.com/"><img src="http://example.com/image.jpg" data-special="t:https://www.twitter.com" /></a>
因此if
语句只有在img
属性存在且包含data-special
后跟任何链接的字符串中有t:
标记时才会为真。感谢任何帮助!
答案 0 :(得分:0)
在您的简单情况下,使用:not()选择器和.wrap()函数就足够了:
$('*:not(a) > img[data-special^="t:"]').wrap('<a href="http://example.com/"></a>');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img src="http://example.com/image1.jpg" data-special="t:https://www.twitter.com" />
<a href=""><img src="http://example.com/image4.jpg" data-special="t:https://www.twitter.com" /></a>
<img src="http://example.com/image2.jpg" data-special="t:https://www.twitter.com" />
<img src="http://example.com/image3.jpg" data-special="t:https://www.twitter.com" />
&#13;
是否可以将该jQuery元素检查转换为条件 我的if语句?所以只有在有东西时才输入if-block 包裹?
var imgs = $('*:not(a) > img[data-special^="t:"]');
if (imgs.length) {
imgs.wrap('<a href="http://example.com/"></a>');
}