正規表現:文字または数字以外の任意の文字


112

私は、文字でも数字でもない文字に一致する正規表現を見つけようとしています。(,, @、£、()などの文字...

見つかったら、空白スペースに置き換えたいです。

何かアドバイス。

回答:


165

文字または数字以外のものと一致させるには、これを試すことができます。

[^a-zA-Z0-9]

そして置き換えるには:

var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');

17
\wこれはWord文字用であり、[a-zA-Z0-9_](アンダースコアは単語文字と見なされることに注意してください)... と同じです。したがって、略記は次のようになりますstr.replace(/[^\w]/g, ' ')
Joel Mellon

しかし、多くのユニコード文字も含まれます!Unicode文字を除外する方法はありますか?
Clite Tailor

1
Unicode文字を含めるには、[^ \ p {L} 0-9]を使用できます
Dave

@Dave:2018年現在、ポリフィルなしではどうやら... stackoverflow.com/questions/280712/javascript-unicode-regexes
Nickolay

スペースで置き換えるのではなく、方法があります...識別された文字が後に続く「\」で置き換えますか?このように:このdfj、dsf7lfsd .sdklfjをこのdfj \、dsf7lfsd \ .sdklfjにしますか?
CrazySpy

38

この正規表現は、文字、数字、アンダースコア(_)文字以外のすべてに一致します。

\W

たとえばJavaScriptの場合:

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: "          asdf 345345"

私は彼が/(_ | \ W)/ gを探していると思います。数字や文字(英語)以外のものに一致します
kennebec

@sbmaxx&、(、)以外のすべての文字を置き換えたい。この条件を現在の正規表現に追加するにはどうすればよいですか?
K Pal

17

あなたは探している:

var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');

これにより、英数字以外のすべての文字がスペースに置き換えられます。

末尾の「g」はすべての出現箇所を置き換えます。

az(小文字)とAZ(大文字)を指定する代わりに、大文字と小文字を区別するオプションを使用することもできます/[^a-z0-9]/gi


スペースにもマッチしますか?スペースを確保してください。ありがとう。
James Jeffery

スペース文字は一致しますが、その後スペース文字に置き換えられるため、実際にはそれらはそのままになります(スペースはスペースのままです)。
jimbo

9

これは遅すぎる方法ですが、受け入れられた答えがないので、私が最も簡単なものだと思うものを提供したいと思います:\ D-すべての非数字文字に一致します。

var x = "123 235-25%";
x.replace(/\D/g, '');

xの結果: "12323525"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressionsを参照してください


5

str.replace(/ [^ \ w] /);を実行してみてください それはあなたの文字列からすべての非アルファベットと数字を置き換えます!

編集1: str.replace(/[^\w]/g, ' ')


2
有効な答えは次のとおりstr.replace(/[^\w]/g, ' ')です。/gフラグを含めない場合、最初の出現のみが置き換えられます。また、置換文字列を定義しない場合は、ここでは空白スペース' 'となり、undefinedあらゆる場所で置換されます。最後に、アンダースコアは一致するため、置き換えられません\w。この答えは完全に一致するわけではありません。
ジュリアンリロション2017

3

他の人が見るだけ:

someString.replaceAll("([^\\p{L}\\p{N}])", " ");

文字と数字以外のUnicode文字はすべて削除されます。

ソース


2つの賛成投票がどこから来たのかはわかりませんが、JavaScript(この質問について)replaceAllでは\p{..}はなく、プロパティエスケープは広く実装されていません。
Nickolay 2018年

3
  • 文字のみに一致 /[A-Z]/ig
  • 文字以外のものに一致 /[^A-Z]/ig
  • 番号のみに一致/[0-9]/gまたは/\d+/g
  • 番号以外のものに一致する/[^0-9]/gか、/\D+/g
  • 数字や文字以外のものに一致 /[^A-Z0-9]/ig

他の可能なパターンがあります


2

あなたがstr = str.replace(/\W|_/g,'');それを試したことがありますが、文字のない文字列を返します|。パイプバーの後に特別な文字があるかどうかを指定して、それらをキャッチすることもできます。

var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, ''); 戻ります str = 1324567890abcJohnDoe

または数字と文字を探し、空の文字列( "")に置き換えます:

var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, ''); 戻ります str = '§$)% #$@';


1

éあなたがこれを試すことができるような文字、数字または文字以外のものを分音記号と一致させるには:

[^\wÀ-úÀ-ÿ]

そして置き換えるには:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

分音記号をサポートするトップポストに触発されました

ソース

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