6

#ff00fffirstword#445533secondword#008877thirdword文字列をに変換できますか

<font color='#ff00ff'>firstword</font><font color='#445533'>secondword</font><font color='#008877'>thirdword</font>

javascriptまたはactionscript3プログラムで正規表現を使用していますか?

以下のコードを試しましたが、完璧ではありません (actionscript3 コード):

var pat:RegExp = /(#\w{6})([^#]+)/g;
var html:String = t.replace(pat, "<font color=\'$1\'>$2</font>");
trace(html); // output :<font color='#ff00ff'>firstword</font><font color='#445533'>secondword</font><font color='#008877'>thirdword</font>

その文字列にもう 1 つある場合#、出力は希望どおりにはなりません。これを達成するためのより強力な正規表現を書く方法がわかりません。

4

2 に答える 2

6

説明

この正規表現を使用できます

正規表現: ([#][0-9a-f]{6})(.*?)(?=[#]|$) に置き換えます<font color='\1'>\2</font>

ここに画像の説明を入力

Javascript コード例:

<script type="text/javascript">
  var re = /([#][0-9a-f]{6})(.*?)(?=[#]|$)/;
  var sourcestring = "#ff00fffirstword#445533secondword#008877thirdword";
  var replacementpattern = "<font color='\1'>\2</font>";
  var result = sourcestring.replace(re, replacementpattern);
  alert("result = " + result);
</script>

$sourcestring after replacement:
<font color='#ff00ff'>firstword</font><font color='#445533'>secondword</font><font color='#008877'>thirdword</font>
于 2013-06-02T14:43:24.667 に答える
5

or( |) 演算子と行末の先読みを使用してみてください。

var pat:RegExp = /(#[0-9a-f]{6})([^#]+?)(?=#|$)/gi;
var html:String = t.replace(pat, "<font color=\'$1\'>$2</font>");
trace(html); 

念のため、ここ[0-9a-f]の代わりに個人的にも使用します。\w先読み(?=#|$)は、それが行末または別のハッシュであることを保証します。i念のためフラグも入れておきました。

漂遊ハッシュもあるため、これを使用できます。

var pat:RegExp = /(#[0-9a-f]{6})(.+?)(?=#[0-9a-f]{6}|$)/gi;
var html:String = t.replace(pat, "<font color=\'$1\'>$2</font>");
trace(html); 

ここで出力を参照してください。

そしてdebuggex:

正規表現イメージ

于 2013-06-02T14:43:00.960 に答える