正規表現、空白またはコロンを除くすべての非英数字文字


131

これをどこで行うことができますか?

基本的に、私はアンパサンド、セミコロン、ドル記号など、あらゆる種類の雑多な文字と一致するようにしています。


13
/[^a-zA-Z0-9\s\:]*/
ケリー

回答:


246
[^a-zA-Z\d\s:]
  • \ d-数値クラス
  • \ s-空白
  • a-zA-Z-すべての文字に一致します
  • ^-それらをすべて否定します-そうすることで-非数値文字、非スペース、非コロン

それも私が見ていたものです:))-私はあなたの完璧な答えを宣伝しなければなりません
チューダー・コンスタンタン

6
私が見つけた唯一のことは、これがéやãなどの特殊文字を削除することです。[^ \ w \ d \ s:]を使用します。
Eric Belair、2015年

5
これは非ラテン文字も「特殊な」ラテン文字もキャッチしないため、反対投票されました。
ダミアン '18年

\dそして\s、Perlの拡張機能であり、通常、次のような古いツールではサポートされていません。grepsedtrlex、など
tripleee

38

これはそれを行うはずです:

[^a-zA-Z\d\s:]

1
残りは空白をチェックせずに空白をチェックするか、実際に否定するために間違った場所に否定を持っています。
ザカリースコット、

\ wはアンダースコアもキャッチします-これは英数字以外の文字です
Tudor Constantin

ああ!私は変更します-私はそれを知りませんでした。エンジンによって動作が異なると思いますが、OPに安全な答えを与えることもできます。
ルーク・スニーラー、

2
これは非ラテン文字も「特殊な」ラテン文字もキャッチしないため、反対投票されました。
ダミアン

16

アクセント付きのラテン文字(たとえば、àÑ)を通常の文字として扱いたい場合(つまり、それらも一致させないようにする場合)、適切なUnicode範囲(\ u00C0- \ u00FF)を正規表現に含める必要があるため、このようになります:

/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
  • ^ 次のものを否定する
  • a-zA-Z 大文字と小文字を照合します
  • \d 数字に一致
  • \s 空白に一致します(スペースのみを一致させたい場合は、これをスペースに置き換えます)
  • : コロンに一致
  • \u00C0-\u00FF アクセント付きラテン文字のUnicode範囲に一致します。

nb。Unicode範囲の一致はすべての正規表現エンジンで機能するわけではありませんが、上記は確かにJavascriptで機能します(このペンで見られるように) Codepenので)。

nb2。アンダースコアの一致について気にしない場合a-zA-Z\d\w、で置き換えることができます。これは、文字、数字、アンダースコアに一致します。


この範囲には、英数字以外の一部の文字(U + 00D7およびU + 00F7)が含まれ、ポーランド語、チェコ語、ベトナム語などの非西洋言語からの有効なアクセント付き文字の多くは除外されます
tripleee

1
RegExの各部分の説明に賛成。
モラジャビ

14

これを試して:

[^a-zA-Z0-9 :]

JavaScriptの例:

"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")

オンラインの例をご覧ください。

http://jsfiddle.net/vhMy8/


3
これは非ラテン文字も「特殊な」ラテン文字もキャッチしないため、反対投票されました。
ダミアン

14
回答に反対票を投じるのは簡単ですが、建設的な情報をボードに提供することはさらに困難です。たとえば、非ラテン文字や「特別な」ラテン文字をどのようにキャッチするのでしょうか。私がここまで数えた時点で、同じ理由で3つの回答に反対票を投じました。たとえば、私はここで、これらの回答で説明されている内容の正確な正規表現を見つけます。アプリケーションで使用されない文字セットは気にしません。収穫逓減の法則。

アーロンは米国市民にとっては「マイナーな微調整」かもしれませんが、この惑星の残りの部分に非常に関連しています。
Michael K. Borregaard


4

「非英数字」を意味する場合は、これを使用してみてください。

var reg =/[^a-zA-Z0-9]/g      //[^abc]

1

この正規表現は、C#PCREGoなどで機能します。

どのRegexBuddyの ChromeのJavaScriptでも機能しませんよると。しかし、すでにその例がここにあります。

この主な部分は次のとおりです。

\p{L}

表す\p{L}か、\p{Letter}任意のlanguage.`からの手紙のいずれかの種類


完全な正規表現自体: [^\w\d\s:\p{L}]

例: https : //regex101.com/r/K59PrA/2


これが、Unicodeアクセント付きアルファベットを適切に適切に処理する唯一の回答です。残念ながら、すべての正規表現エンジンがこの機能をサポートしているわけではありません(3.8の時点で、たとえ正規表現エンジンが表面的にはPCREベースであっても、Pythonにはそれが欠けています)。
tripleee

1
私は答えからPythonを削除します。私はそれをテストしたと思いましたが、どうやらそうではありませんでした。ご指摘いただきありがとうございます。
Ste

0

これを追加してみてください:

^[^a-zA-Z\d\s:]*$

これは私のために働いています... :)


これは、2011年ザ・から受け入れ答えを繰り返しているようだ^し、$それが全体のラインと一致するアンカー閉じ込め*、それはまた、空行に一致する数量詞手段を。
tripleee

0

JavaScriptの場合:

/[^\w_]/g

^否定、つまり次のセットにないものを選択する

\w 任意の単語文字(つまり、任意の英数字と下線)

_ アンダースコアは「単語」文字と見なされるため、否定する

使用例- const nonAlphaNumericChars = /[^\w_]/g;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.