2011-12-03 3 views
1
私は "^"以外のすべての文字を置き換えるために、正規表現を使用しています

" "そうのように置き換えられている:正規表現は

var s = string.replace(/[^\^ ]/g,"X"); 

それは動作しますが、あなたが見ることができるように、それはすべての非ブラックリストに置き換えています文字はXです。これは一時的なものです。ブラックリストに載っていないすべての文字をタグで囲むことができます。例えば

は、私がもたらすことが正規表現を使用したいと思い、文字列は「foo」でいたと仮定します。

<span>f</span><span>o</span><span>o</span> 

が、このことは可能ですか、私は手動で文字列を反復して行う必要があります自分をラッピングする?あなたは

<span>$&</span> 

$&によって置き換えることができます

答えて

5

はマッチ全体の値が含まれているので、spanタグでそれぞれの不要な文字を囲むます:

>> 'foo'.replace(/[^\^ ]/g, '<span>$&</span>') 
"<span>f</span><span>o</span><span>o</span>" 

あなたはまた、後に+を追加することができます代わりにあなたの正規表現の文字クラスを囲んでください。

>> 'foo'.replace(/[^\^ ]+/g, '<span>$&</span>') 
"<span>foo</span>" 
2
var s = string.replace(/([^\^ ])/g,"<span>$1</span>"); 
4

あなたがグループ化を使用することができ、あなたはその後、グループ番号放置nで、$nに戻って参照することができます。 ()とグループ化できます。また、^は、文字クラスでエスケープする必要はありません。 `^`エスケープする必要がないことを指摘するために

"foo^bar".replace(/([^^ ])/g, "<span>$1</span>"); 
// "<span>f</span><span>o</span><span>o</span>^<span>b</span><span>a</span><span>r</span>" 
+0

1:この場合は

、あなただけのように一つのグループを、したいです。 – ridgerunner