2012-09-09 10 views

答えて

25

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

\sは「空白文字」を表します。それには[ \t\r\n]が含まれます。

アンダースコアを使用しない場合は、ちょうど[A-Za-z0-9]を使用できます。

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

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

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

これは、前述のすべての文字、\u0000-\u0080\u0082の範囲をできるようになります。 \u0081が削除されます。

+0

ちょっと考えましたが、アンダースコア文字も残していませんか? –

+0

と感嘆?それは国際的な手紙を削除します... –

+0

@tomaszs私はそれに対処するための答えを更新しました。 – sachleen

1

あなたのような正規表現を試すことができます:あなたはこれが単語文字、スペース、感嘆符、または質問以外のすべてを置き換えます正規表現

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

を使用することができますvar cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");

+0

あなたは正規表現から 'g'フラグを削除したと思います。 – jfriend00

+0

Ops ...ありがとう、私は答えを編集しました。 – rcdmk

3

これまで両方の回答が疑問符を捨てました。私は彼らにコメントしますが、まだ十分な担当者がいません。

ダビデは正しいです、sachleenの正規表現はアンダースコアを残します。 rcdmkの正規表現は、以下のように修正されていますが、国際的な文字を気にすると、もっと複雑になるかもしれませんが、このトリックを行います。

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

これにより、改行やタブ、スペースが残されます。あなたにも新しい行とタブを取り除きたい場合は、それを変更します。

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

*今*あなたはコメントを残すことができます! =) –

+0

笑、ありがとう! :) – Kelvin

+0

しかし、覚えている:素晴らしい力で素晴らしい... *うわー、輝いて!* –

2
text = "A(B){C};:a.b*!c??!1<>[email protected]#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"

関連する問題