正規表現での文字集合の反転
角括弧の先頭にキャレット '^' を使うことで、意味を反転させることができます。つまり、
例えばパターン [ab] が文字 'a' または 'b' を探す場合、
パターン [^ab] は 'a' と 'b' 以外のすべての文字を探します。
例
この例では、検索パターンは次のようになります:
文字 'x'、次に文字 'a' でも 'b' でも 'c' でもないもの、そして文字 'z':
let str = 'xaz xbz xcz xez';
let res = str.replace(/x[^abc]z/g, '!');
結果、変数には次の文字列が格納されます:
'xax xbx xcx !'
例
この例では、検索パターンは次のようになります:
文字 'x'、次に小文字のラテン文字ではないもの、そして文字 'z':
let str = 'xaz xbz x1z xCz';
let res = str.replace(/x[^a-z]z/g, '!');
結果、変数には次の文字列が格納されます:
'xaz xbz ! !'
実践問題
次のパターンにマッチする文字列を見つける正規表現を書いてください:
数字 '1'、次に 'e' でも 'x' でもない文字、数字 '2'。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字 'x'、次に 2 から 7 までの数字ではないもの、文字 'z'。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字 'x'、次に大文字のラテン文字 1 回以上ではないもの、文字 'z'。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字 'x'、次に大文字または小文字のラテン文字でも 1 から 5 までの数字でもないものを 1 回以上、文字 'z'。