JavaScriptの正規表現における文字グループ
文字のグループ全体を一度に選択できる特別なコマンドが存在します。
コマンド \d は 0 から 9 までの数字を意味します。
コマンド \w は数字、ラテン文字、またはアンダースコアを表します。
コマンド \s はスペースまたは空白文字(スペース、改行、タブ)を表します。
コマンドの意味を反転させるには、大文字を使用します。
例えば、\d が数字なら、\D は数字以外です。
例
すべての数字を見つけてみましょう:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
結果、変数には以下が格納されます:
'! !! !!!'
例
繰り返し演算子はグループコマンドを一つの単位として扱うため、グループ化の括弧は必要ありません。 次の例では、検索パターンは「0から9の数字が1回以上」となります:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
結果、変数には以下が格納されます:
'! ! ! abc @@@'
例
次の例では、検索パターンは「数字以外の文字が1回以上」となります:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
結果、変数には以下が格納されます:
'123!3!'
例
この例では、検索パターンは「空白文字1回」となります:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
結果、変数には以下が格納されます:
'1!12!123!abc!@@@'
例
この例では、検索パターンは「空白以外の文字が1回以上」となります。
スペースで区切られたすべての部分文字列が '!' に置き換えられます:
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
結果、変数には以下が格納されます:
'! ! ! ! !'
例
この例では、検索パターンは「数字または文字が1回以上」となります。
数字と文字からなるすべての部分文字列が '!' に置き換えられます:
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
結果、変数には以下が格納されます:
'! ! ! ! @@@'
例
この例では、検索パターンは「数字でも文字でもない文字が1回以上」となります。
この定義に当てはまるのは、'@@@' とすべてのスペース(これらも数字でも文字でもありません)です。
末尾の1つの '!' は、文字列 ' @@@' (先頭にスペースあり)が変換されたものであることに注意してください:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
結果、変数には以下が格納されます:
'1!12!123!Abc!'
実践問題
以下の文字列が与えられます:
let str = 'a1a a2a a3a a4a a5a aba aca';
次の条件を満たす文字列を見つける正規表現を書いてください:両端が文字 'a' で、その間に1つの数字がある。
以下の文字列が与えられます:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
次の条件を満たす文字列を見つける正規表現を書いてください:両端が文字 'a' で、その間に任意の数の数字がある。
以下の文字列が与えられます:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
次の条件を満たす文字列を見つける正規表現を書いてください:両端が文字 'a' で、その間に任意の数の数字がある(数字がゼロ、つまり文字列 'aa' も含む)。
以下の文字列が与えられます:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
次のパターンの文字列を見つける正規表現を書いてください:両端が文字 'a' と 'b' で、その間が数字でもスペースでもない。
以下の文字列が与えられます:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
次のパターンの文字列を見つける正規表現を書いてください:両端が文字 'a' と 'b' で、その間が文字でも数字でもスペースでもない。
以下の文字列が与えられます:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
すべてのスペースを '!' に置き換える正規表現を書いてください。