2017-02-11 3 views

答えて

1

ない「単語」の文字(すなわち。[a-zA-Z0-9_])と3つの先読みである任意の文字に一致し/(?!\/)(?!\)(?!\-)(\W)/ig正規表現は、文字/-を制限します。カンマは、\Wの一部であるため、削除されます。

あなたが別の先読みを追加し、それを維持したい場合は

(?!,)は、その後、あなたの正規表現は、次のようになります。

return str.replace(/(?!\/)(?!)(?!-)(?!,)(\W)/g, ''); 

私はunnecessay脱出し、大文字小文字を区別しないフラグを削除しました。

これは、のように記述する必要があります。downvoter

return str.replace(/[^\w\/, -]/g, ''); 
+0

あなたの答えをありがとう、なぜ私は単にこの部分を削除することはできません説明することができます:\ W'正規表現から?あなたはまた、あなたが意味することを説明することができます:_私は不要なエスケープと大文字小文字を区別しないフラグを削除しました。ありがとうございました! – user3378165

+0

@ user3378165:正規表現では、特定の特殊文字をエスケープする必要があります。スペースとダッシュは特別なものではないので、エスケープする必要はありません。 '\ W'だけを削除することはできません。なぜなら、長さが0のマッチした3つの先読みしかないからです。何も削除しても何も削除できません! – Toto

+0

@ user3378165:いくつかの正規表現の基本については、http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-meanおよびhttp://www.regular-expressions.info/ – Toto

関連する問題