2009-08-27 5 views
1

私はFlashでTextFieldに設定したhtmlテキストをいくつか持っています。 。私は正規表現で本当に悪い思い異なる色で、どちらかだけで下線やリンク先が「_blank」に設定されていることを確認し使用するか(リンクを強調するためにRegExでhtmlText as3のURLを変更する

をしたい私はRegExrに便利な表現を見つけました:。

</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?> 

が、私はそれを使用することができませんでした

私が扱っされることはこれです:。

<a href="http://randomwebsite.web" /> 

私はString.replaceを行う必要があります()

このような何かを得るために:私はこれを一度に行うことができるかわからない

<u><a href="http://randomwebsite.web" target="_blank"/></u> 

を。優先度は、リンクが空白に設定されていることを確認しています。

+1

あなたはスタイルシートの使用を検討しましたか? – Cay

答えて

1

私はこの単純なテストツール http://www.regular-expressions.info/javascriptexample.html

はここで、より複雑な入力文字列での作業例です、あなたをお勧め。

var pattern:RegExp = /<a href="([\w:\/.-_]*)"[ ]* \/>/gi; 
var str:String = 'hello world <a href="http://www.stackoverflow.com/" /> hello there'; 
var newstr = str.replace(pattern, '<li><a href="$1" target="blank" /></li>'); 
trace(newstr); 
+0

)。 –

2

アクションスクリプトの正規表現はどのように動作するのかわかりませんが、その属性がタグのどこにでも表示できることに注意して、<a href=ごとに<a target="_blank" href=を置き換えることができます。

私はAS3の正規表現の構文について多くを知らないので、アドビのドキュメントからコピー
var pattern:RegExp = /<a\s+href=/g; 
var str:String = "<a href=\"http://stackoverflow.com/\">"; 
str.replace(pattern, "<a target=\"_blank\" href="); 

:多分このような何か。

ここで、正規表現でHTMLを操作するのは、通常非常に壊れやすいものですが、この場合、あなたはそれを手放すことができます。まず、リンクのスタイルを設定するためのより良い方法は、CSSを通じて、むしろ<font>タグ使用するよりも、次のようになります。他のタグとのリンクを囲むように

str.replace(pattern, "<a style=\"color:#00d\" target=\"_blank\" href="); 

を、あなたははらんでいる<a ...>anchor text</a>キャプチャすべてに持っていますかなりのものがそこに入ることができるので、一般的なケースでは難しいです。

別のアプローチは、使用するために次のようになります。

var start:RegExp = /<a href=/g; 
var end:RegExp = /<\/a>/g; 
var str:String = "<a\s+href=\"http://stackoverflow.com/\">"; 
str.replace(start, "<font color=\"#0000dd\"><a target=\"_blank\" href="); 
str.replace(end, "</a></font>"); 

私が言ったように、私は使用しないので、塩の粒でこれを取ることがありません。 DOMを操作する方法があれば、より良いかもしれません。

このような何かが同様に動作するように見えるかもしれません:

var pattern:RegExp = /<a\s+href=(.+?)<\/a>/mg; 
... 
str.replace(pattern, 
    "<font color=\"#0000dd\"><a target=\"_blank\" href=$1</a></font>");