6

文字列内のすべての非単語文字を置き換えるために、いくつかの助けが必要です。

例として(stadtbezirkspräsident'はになりstadtbezirkspräsidentます。

ñこの正規表現はすべての言語で機能するはずなので、やのような文字を一致させる方法がわからないため、少し注意が必要œです。私はこれを解決してみました

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

しかし、それでもØ左のような多くの特殊文字があります。

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

4

3 に答える 3

6

トリックを使ってみてください

str.replace(/(?!\w)[\x00-\xC0]/g, '')
于 2012-11-03T14:03:16.093 に答える
6

すべてのUnicode範囲を自分で定義している場合は、多くの作業が必要になります。

Steven LevithanのXRexExpパッケージをUnicodeアドオンで使用し、そのUnicodeプロパティショートカットを利用する方が理にかなっているかもしれません。

var regex = new XRegExp("\\P{L}+", "g")
string = XRegExp.replace(string, regex, "")
于 2012-11-03T14:04:06.663 に答える
1

これはTimPietzckerの回答に対するコメントですが、コメントでコードを表示するのは厄介です...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はリリースされていますが、新しい文字はありません)。

于 2012-11-03T14:43:27.473 に答える