2010-11-23 2 views
-1

JavaScriptでテキストのみのメニュー/コマンド構造をHTMLリンクに変換しています。テキストは私が受け取ることにまたがる形である:JavaScriptのHTMLリンクにテキストメニューを変換する

 
<span>1. First option   2. Second option  </span> 
<span>3. Third option         </span> 

私は主な問題があるリンクテキストは、「最初のオプション」、「第二にオプション」、などであることで、各メニュー項目のリンクを希望スパンには空白があります:プレはそれらの上にあり、スパン内のすべてのスペースを保持する必要があります。つまり、各スパン内のテキストの長さは変更できません。

サブパターンとreplaceメソッドを使って正規表現でリンクを作成できましたが、スパン全体を選択したり、サブパターンに空白を入れたりすることはできません。 /(\d*)\.\s*([a-zA-Z][a-zA-Z\s]*)/g

+0

あなたは自分自身に厄介な問題があります。なぜこのメニューは虚偽のhtmlとしてフォーマットされていますか?それをjsonまたはxmlと定義するのはずっと意味があります。 –

+0

古いコマンドラインシステムをスクラップし、動的にウェブに置くスクリーン。かなりきちんとしていますが、このようなやり方で対処する必要があります。 – ScottR

答えて

0

私は否定先読みを学ばなければならなかった:)ここで私が得たものです。

/(((d\).\s)(((?)[d\s]|\s(?!(::s*\d*.)|(?:\s) * $))\ d(?!(d:\ d *。\ s)))))/ g

$ 1には '1'が含まれています。 '、$ 2には' 1 '、$ 3にはメニューテキストが含まれています。実際にはうまくいく。

0

jqueryのを使用して::これは私が同じスパン分離の両方のリンクを取得しますが、スペースに残していたものである

var links=''; 
$('span').each(function(){ 
var text = this.innerText.replace(" ",""); 
var a= '<a href="#">' + text + '</a>'; 
links += a; 
}); 

$('span').parent().html(links); 
+1

これは、空白を失い、各メニューコマンドに別々のリンクを作成しないなど、さまざまな方法では機能しません。また、すべてのスパンを拭き取ります。これは悪い副作用です。 – ScottR

関連する問題