2011-10-11 16 views
0

イメージキャプションに数年間のTextileマークアップを付けてWordpressサイトを継承しました。むしろ私はこのようにマークアップされてい斜体オンにするいくつかのjQueryを使用したいのですが、それらをリッピングより:この正規表現を使用してテキストイタリック体のマークアップをHTMLに変換する

Hello this is some <em>italic text</em> here. 

Hello this is some _italic text_ here. 

をここおかげで、に基づいて、私が試したものです以下の答え。

私のマークアップでは、2番目の_文字が見つからないことがあります。この1のために

<p class="wp-caption-text">Left: Paul Klee, _Grosses Tier (Large Beast)_, 1928; fractional and promised gift of the Djerassi Art Trust. Right: Andrew Schoultz, _Three Caged Beasts_, 2011; Courtesy the artist and Marx &amp; Zavattero; © Andrew Schoultz</p> 

、それはこの生成します:ここで

は、現実世界の例である

<p class="wp-caption-text">Left: Paul Klee, <i>Grosses Tier (Large Beast)_, 1928; fractional and promised gift of the Djerassi Art Trust. Right: Andrew Schoultz, _Three Caged Beasts</i>, 2011; Courtesy the artist and Marx &amp; Zavattero; © Andrew Schoultz</p> 

regexpはこの問題を解決するように変更することができる方法任意のアイデア?あなたにintalic作るために大量のテキストを持っている場合、あなたはすべての一致を得るために、正規表現、あなたの「G」フラグを使用する必要があります

var str = 'Hello this is some _italic text_ here.'; 
var str = str.replace(/_([^_]+)_/,"<em>$1</em>"); 

+0

あなたの正規表現は、 '_([^ {] *)_' _ 'これは試して動作しない_' [{何でも]を置き換えます。 '_([^ _] *)_'これで '_ [anything but _] _ 'の代わりになりました – andlrc

答えて

0

はこれを試してみてください。

+0

これは*ほとんど*私が望むのと同じように動作します。しかし、文字列に '_'が複数現れているときに問題に遭遇します。例えば、_this_と_that_はイタリック体でなければなりません。それはイタリックで「this_と_that」を行い、「this」と「that」ではありません。 – REJH

0
<script type="text/javascript"> 
    jQuery().ready(function() { 
     jQuery("p.wp-caption-text").each(function(n) { 
      this.innerHTML = this.innerHTML.replace(new RegExp("{link:([^}]*)}([^{]*){/link}"), "<a href=\"$1\">$2</a>"); 
      this.innerHTML = this.innerHTML.replace(new RegExp("{i}([^{]*){/i}"), "<i>$1</i>"); 
     }); 
    }); 
</script> 

あなたが代わりに[..]たい場合i[link...]...[/link]が、{link...}...{/link}と交換されていません。

<script type="text/javascript"> 
    jQuery().ready(function() { 
     jQuery("p.wp-caption-text").each(function(n) { 
      this.innerHTML = this.innerHTML.replace(new RegExp("\[link:([^\[]*)\]([^\[]*)\[/link\]"), "<a href=\"$1\">$2</a>"); 
      this.innerHTML = this.innerHTML.replace(new RegExp("\[i\]([^\[]*)\[/i\]"), "<i>$1</i>"); 
     }); 
    }); 
</script> 

をたぶんタイプミス

申し訳ありませんがあります。 !

私の質問の態度を読んでいないために:

他を見てください。その

ワーキングそして、何gを使用してきている。

var str = 'Hello this is some _italic text_ here.'; 
var str = str.replace(/_([^_]+)_/g,"<em>$1</em>"); 
関連する問題