2012-11-03 4 views
6

文字列内の単語以外の文字をすべて置き換えるには、いくつかの助けが必要です。?* +#のような非単語文字をすべて置換してください

例として、(stadtbezirkspräsident'stadtbezirkspräsidentになるはずです。

このRegexはすべての言語で動作するはずですので、ñœなどの文字をどのように一致させるかわからないため、扱いにくいです。私は

string.replace(/[&\/\\#,+()$~%.'":*?<>-_{}]/g,' '); 

でこれを解決しようとしたが、THERはØ、左のような多くの特殊文字にはまだです。

これには一般的なセレクタがありますか、または誰かがこの問題を以前に解決しましたか?

+0

Øはさまざまな言語の文字(デンマーク語など)です。 –

+0

類似:[this](http://stackoverflow.com/questions/2392194/how-to-match-the-international-alphabet-english) -az-non-english-with-a-regu)質問です。 javascript regexにはネイティブのUnicode対応マッチャーがありません –

答えて

6

を使用してみてください。

それはスティーブンLevithanのXRexExp package with Unicode add-onsを使用する方が理にかなって、そのUnicodeプロパティのショートカットを利用かもしれません:

var regex = new XRegExp("\\P{L}+", "g") 
string = XRegExp.replace(string, regex, "") 
+1

@Ωmega:編集をありがとう! –

+1

thx !!!! :D XRegExpは本当に素晴らしいです! –

6

あなたはすべてのUnicodeが自分の範囲、多くの仕事になるだろう定義している場合はトリック

str.replace(/(?!\w)[\x00-\xC0]/g, '') 
+1

'\ w'はロケール対応またはUnicode対応ではありません。 –

+0

@TimPietzcker - 私の解決方法では、16進数の範囲内の特殊文字は、 –

+1

のみ削除されています(私のコメントを書いていたときと同じように編集しませんでした)。 (これは8ビットのANSIセットであっても、 'x'と '÷'が思い浮かぶ)でも捕捉されます。 –

1

これはティムPietzckerの回答にコメントの詳細ですが、コメントでコードを提示することは厄介である...ここでのXRexExpパッケージを使用しての簡単な例:本番環境での使用のために

<p id=orig>Bundespräsident/ß+ð/ə¿α!</p> 
<p id=new></p> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js"> 
</script> 
<script src="http://xregexp.com/addons/unicode/unicode-base.js"> 
</script> 
<script> 
var regex = new XRegExp("\\P{L}+", "g"); 
var string = document.getElementById('orig').innerHTML; 
string = XRegExp.replace(string, regex, ""); 
document.getElementById('new').innerHTML = string; 
</script> 

、あなたはおそらく基本パッケージとUnicodeのプラグインのいくつかのバージョンをダウンロードして、サーバ上でそれらを使用したいと思います。

注:コードは、Unicodeで文字(アルファベット)に分類されない文字をチェックします。自然言語の単語にはハイフン、アポストロフィ、その他の非文字が含まれていますが、これは「単語の文字」の意味に相当します。

文字がUnicodeに追加され、文字のカテゴリが(まれに)変更される可能性があることに注意してください。しかし、パッケージはうまく維持されています。それはUnicode 6.1に対応しています(バージョン6.2は出ましたが、新しい文字はありません)。

関連する問題