2017-02-08 8 views
-1

私は正規表現に取り組んでいますが、実際にはいくつかの文字列操作を行いますが、現時点では私のコードが頻繁にトリガーされています。正規表現は、本当に私の強いスイートではありません - 私の現在の正規表現は、リンクに包まれたHREF /に囲まれていない特定の属性値を持っているのimg要素を見つける必要があるRegexがリンクにラップされていない属性を持つ画像を見つける

if(/(?!<a(.*?))<img src="(.*?[^<])" data-special="(t:).*"/.test(str)) { 
    // do this code 
} 

私の正規表現です。たとえば、私はそれが次のことをキャプチャする:

<img src="http://example.com/image.jpg" data-special="t:https://www.twitter.com" /> 

data-special属性が存在する文字列のimgタグがあるのであればif文が唯一の真のだろう

<a href="http://example.com/"><img src="http://example.com/image.jpg" data-special="t:https://www.twitter.com" /></a> 

と交換しますそれにはt:とそれに続くリンクが含まれています。助けをよろしく!

答えて

0

あなたの簡単なケースでは、:not()セレクタと.wrap()機能を使用するには十分だろう。

$('*:not(a) > img[data-special^="t:"]').wrap('<a href="http://example.com/"></a>');
<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" />

はそれがjQueryの要素がために、条件付き に確認することを変換することができます私のif文?だから、何かがある場合は、if-blockと入力してください。 をラップしますか?

var imgs = $('*:not(a) > img[data-special^="t:"]'); 
if (imgs.length) { 
    imgs.wrap('<a href="http://example.com/"></a>'); 
} 
+0

ご返信ありがとうございます。 jQueryの要素チェックをif文の条件式に変換することは可能ですか?だからラップするものがあればifブロックだけを入力してください。 – XanT

+0

@XanT、はい、更新情報をご覧ください – RomanPerekhrest