一つの方法は、許容可能なグループの正規表現を格納することで一致したすべての特殊文字を含む配列だ、と無効な文字を見つけるためのグループの反転を作成します。
allowedCharacters = '0-9a-zA-Z\\^\\&\\\'\\@\\{\\}\\[\\]\\,\\$\\=\\!\\-\\#\\(\\)\\.\\%\\+\\~\\_ ';
allowedRegex = new RegExp('^[' + allowedCharacters + ']+$')
notAllowedRegex = new RegExp('[^' + allowedCharacters + ']', 'g')
var invalidString = 'πa√b';
allowedRegex.test(invalidString) // false
invalidString.match(notAllowedRegex); // ["π", "√"]
正規表現リテラルではなく文字列なので、正規表現文字列内のすべてのバックスラッシュ\
をエスケープする必要があります。
これは、大括弧の中にあるものを反転する[^...]
という正規表現を作成するだけで簡単に動作します。たとえば、[^a]
は、ではなく、の文字と一致します。a
です。ネイティブのRegExpクラスを使用して、文字列に基づいて正規表現を構築します。 notAllowedRegex
はグローバル(g
)フラグを使用して、許可された文字と一致しないすべての文字を表示します。
私は、この正規表現 –
@AndyRayと一致しない文字*を明示的に見つけることで、質問に答えるとは思えません。今それはいいです – RomanPerekhrest