28

すべてを削除する方法:

文字、数字、スペース、感嘆符、文字列からの疑問符?

メソッドが国際言語 (UTF-8) をサポートしていることが重要です。

4

4 に答える 4

56

正規表現を使用できます

myString.replace(/[^\w\s!?]/g,'');

これにより、単語の文字、スペース、感嘆符、または質問以外のすべてが置き換えられます。

Character Class : \w「単語文字」の略で、通常は[A-Za-z0-9_]. アンダースコアと数字が含まれていることに注意してください。

\s「空白文字」の略です。含まれています[ \t\r\n]

アンダースコアが必要ない場合は、単に[A-Za-z0-9].

myString.replace(/[^A-Za-z0-9\s!?]/g,'');

Unicode 文字の場合\u0000-\u0080、式に次のようなものを追加できます。これにより、その Unicode 範囲内のすべての文字が除外されます。削除したくない文字の範囲を指定する必要があります。すべてのコードはUnicode Mapで確認できます。保持したい文字または文字の範囲を追加するだけです。

例えば:

myString.replace(/[^A-Za-z0-9\s!?\u0000-\u0080\u0082]/g,'');

これにより、前述のすべての文字 ( から までの範囲) が許可され\u0000-\u0080ます\u0082。削除し\u0081ます。

于 2012-09-09T22:21:01.997 に答える
7

これまでに投稿された両方の回答は疑問符を省略しました。コメントしますが、まだ十分な担当者がいません。

Davidは正しいです、sachleenの正規表現はアンダースコアを残します。次のように変更されたrcdmkの正規表現でうまくいきますが、国際的な文字を気にする場合は、さらに複雑になる可能性があります。

var result = text.replace(/[^a-zA-Z0-9\s!?]+/g, '');

これにより、新しい行とタブ、およびスペースが残ります。新しい行やタブも削除したい場合は、次のように変更します。

var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '');
于 2012-09-09T22:30:33.893 に答える
5
text = "A(B){C};:a.b*!c??!1<>2@#3"
result = text.replace(/[^a-zA-Z0-9]/g, '')

戻るべきABCabc123

まず、テキストを次のように定義しますA B C a b c 1 2 3が、ランダムな文字を次のように設定しresultます。

text.replace(...)パラメータは次のとおりです。

/.../g/.../:^反転することを意味します。次の文字は削除しないでください。

a-z(小文字)、A-Z(大文字)、0-9(数字)

gグローバルを意味し、最初の一致だけでなくすべての一致を削除します

2 番目のパラメーターは置換文字です。指定された文字列を保持するために、空の文字列に設定します。が指定されている場合は、次のように返されます。"A B C a b c 1 2 3"

于 2016-04-26T12:41:42.580 に答える
3

次のような正規表現で試すことができます。var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");

于 2012-09-09T22:20:26.380 に答える