以前 http://q.hatena.ne.jp/1150378280 で下記の質問させていただき解決しました。
「ここから<A href="x" title="ここを通り">ここを通り</A>ここまで」を
「<STRONG>ここ</STRONG>から<A href="x" title="ここを通り">ここを通り</A><STRONG>ここ</STRONG>まで」
とするjavascriptで使える正規表現を教えてください。
が、
「ここから<A href="x" title="ここを通り"><B>ここ</B>を通り</A>ここまで」
というように<A〜</A>内に<B>といった他のタグが含まれていると変換してしまい、希望通りの動作になりませんでした。
ですので再度教えてください。
よろしくお願いします。
要求はわかりました。
#2は少しだけ修正が必要ですね。
alert(s.replace(/(ここ|<a .*?<\/a>)/gi, function(x){return x.match(/^<a .*?<\/a>$/i)?x:"<STRONG>"+x+"</STRONG>";}));
でできませんか?
「ここ」をお好きな文字列に変更して試してみてください。
var s='ここから<A href="x" title="ここを通り"><B>ここ</B>を通り</A>ここまで'; alert(s.replace(/(ここ)((.*?<a.*?a>)|(.*?))/gi, "<STRONG>$1</STRONG>$2"));
要求されることは、~タグに囲まれた以外の任意の文字列をで囲みたい、ということでいいのですか?
チョットずるいけど
var s='ここからここ<A href="x" title="ここを通り"><B>ここ</B>を通り</A>ここまで'; alert(s.replace(/(ここ|<a.*?a>)/gi, function(x){return x=="ここ"?"<STRONG>"+x+"</STRONG>":x;})); var s='ここから<A href="x" title="この道を通り"><B>この道</B>を通り</A>ここまで'; alert(s.replace(/(この道|<a.*?a>)/gi, function(x){return x=="この道"?"<STRONG>"+x+"</STRONG>":x;}));
要求はわかりました。
#2は少しだけ修正が必要ですね。
alert(s.replace(/(ここ|<a .*?<\/a>)/gi, function(x){return x.match(/^<a .*?<\/a>$/i)?x:"<STRONG>"+x+"</STRONG>";}));
でできませんか?
「ここ」をお好きな文字列に変更して試してみてください。
ありがとうございます
試したのですが、下記のように文字を変えるとダメでしたので他の方法をお願いします
var s='ここから<A href="x" title="この道を通り"><B>この道</B>を通り</A>ここまで';
alert(s.replace(/(この道)((.*?<a.*?a>)|(.*?))/gi, "<STRONG>$1</STRONG>$2"));
回答を頂いた後ですいませんが
色々な文章で使うので「ここ」だけしか対応できない場合は対象外とさせてください
2の回答へ返信ができないのでこちらへ...
「<A〜>〜〜</A>」以外の部分の任意の文字を置き換えたいのです。
Aタグのhref、title属性部分や、リンクとなるテキスト部分は変換せずに、
その他の部分を変換したいのです。
例の話ですが、<A href="xxxxx" title="●●●">昨日は●●●</A>で、今日は●●●でした。<BR>
明日は●●●でしょう。<BR>
というばあい
例の話ですが、<A href="xxxxx" title="●●●">昨日は●●●</A>で、今日は<STRONG>●●●</STRONG>でした。<BR>
明日は<STRONG>●●●</STRONG>でしょう。<BR>
としたいのです
なぜか返信できないのでこちらへ
遅くなりましてすいません。
色々と試していました。
思い通りの動作をしました。
また、質問するときがありましたよろしくお願いします。
ありがとうございました。