JavaScript学習ノート(八)--正規表現
7023 ワード
正規表現は、1つの文字列からなる検索モードです.テキストでデータを検索すると、検索モードでクエリーする内容を記述できます.正規表現は、すべてのテキスト検索とテキスト置換の操作に使用できる単純な文字、またはより複雑なモードです.
正規表現は、文字列を一致させるための独立した学科です.検索、論文の検索、爬虫類、フォームの検証によく使われます.
メタ文字は特殊な意味を持つ文字です
メタ文字
説明
\d
数値の検索
\D
数値以外の文字の検索
\s
空白文字の検索
\S
空白以外の文字の検索
\w
すべての文字と数字を検索
\W
すべての非アルファベットと数値を検索
\uxxxx
16進数xxxxで指定されたUnicode文字を検索
角カッコは範囲内の文字を検索するために使用されます.
式#シキ#
説明
[abc]
かっこ間の任意の文字を検索
[0-9]
0から9までの数値を検索
(x|y)
「|」で区切られたすべてのオプションを検索
数量語は一致する回数を表す
数量語
説明
{n}
マッチングn回
{n,m}
マッチングn~m回
{n,}
マッチングn+回
?
0または1回マッチ
+
一致1または複数
*
0または複数回一致
字面量
ここでabcは正規表現本体を表し、igmは修飾子を表し、i(ignore case)は大文字と小文字を無視し、g(global)はグローバルマッチングを表し、m(multiline)はマルチラインマッチングを表す.修飾子は、グローバル検索で大文字と小文字を区別しません.構造関数
JavaScriptでは、RegExpオブジェクトは、プロパティとメソッドを事前に定義した正規表現オブジェクトです.
search()メソッドは、文字列で指定されたサブ文字列を取得したり、正規表現に一致するサブ文字列を取得したりして、サブ列の開始位置を返します.
replace()メソッドは、文字列に他の文字をいくつかの文字で置換したり、正規表現に一致するサブ列を置換したりするために使用されます.
test()メソッドは、文字列がパターンに一致するかどうかを検出し、文字列に一致するテキストが含まれている場合はtrueを返し、そうでない場合はfalseを返します.
exec()メソッドは、文字列内の正規表現の一致を取得するために使用されます.この関数は、一致する結果を格納する配列を返します.一致が見つからない場合はnullを返します.
練習:正規表現に基づいてすべてのパターンに合致する内容をクエリーする文字列を指定します.
入門心得
正規表現は、文字列を一致させるための独立した学科です.検索、論文の検索、爬虫類、フォームの検証によく使われます.
メタ文字は特殊な意味を持つ文字です
メタ文字
説明
\d
数値の検索
\D
数値以外の文字の検索
\s
空白文字の検索
\S
空白以外の文字の検索
\w
すべての文字と数字を検索
\W
すべての非アルファベットと数値を検索
\uxxxx
16進数xxxxで指定されたUnicode文字を検索
角カッコは範囲内の文字を検索するために使用されます.
式#シキ#
説明
[abc]
かっこ間の任意の文字を検索
[0-9]
0から9までの数値を検索
(x|y)
「|」で区切られたすべてのオプションを検索
数量語は一致する回数を表す
数量語
説明
{n}
マッチングn回
{n,m}
マッチングn~m回
{n,}
マッチングn+回
?
0または1回マッチ
+
一致1または複数
*
0または複数回一致
初期化
var pattern = /abc/igm;
ここでabcは正規表現本体を表し、igmは修飾子を表し、i(ignore case)は大文字と小文字を無視し、g(global)はグローバルマッチングを表し、m(multiline)はマルチラインマッチングを表す.修飾子は、グローバル検索で大文字と小文字を区別しません.
var pattern = new RegExp("abc","igm");
JavaScriptでは、RegExpオブジェクトは、プロパティとメソッドを事前に定義した正規表現オブジェクトです.
文字列メソッドの使用
search()
search()メソッドは、文字列で指定されたサブ文字列を取得したり、正規表現に一致するサブ文字列を取得したりして、サブ列の開始位置を返します.
var str = "Visit Runoob!";
var n = str.search(/Runoob/i); //6
var n = str.search("Runoob"); //6
replace()
replace()メソッドは、文字列に他の文字をいくつかの文字で置換したり、正規表現に一致するサブ列を置換したりするために使用されます.
var str = "Visit Runoob!";
var txt = str.replace(/Runoob/i,"microsoft"); //'Visit microsoft!'
var txt = str.replace("Runoob","microsoft"); //'Visit microsoft!'
RegExpオブジェクトメソッドの使用
test()
test()メソッドは、文字列がパターンに一致するかどうかを検出し、文字列に一致するテキストが含まれている場合はtrueを返し、そうでない場合はfalseを返します.
var patt = /e/;
patt.test("The best things in life are free!");
// "e", :true
exec()
exec()メソッドは、文字列内の正規表現の一致を取得するために使用されます.この関数は、一致する結果を格納する配列を返します.一致が見つからない場合はnullを返します.
var patt = /e/;
patt.exec("The best things in life are free!");
// "e", : e
練習:正規表現に基づいてすべてのパターンに合致する内容をクエリーする文字列を指定します.
var str = "my phone is 18812344321, my emil is [email protected], my name is charles, my friend is jacky, his phone is 17751229900, my friend is tom, his phone is 15912344432."
function search(str){
var pattern = /((188)|(177)|(159))\d{8}/g;
var result;
while(result = pattern.exec(str)){
console.log(result[0]);
}
}
/*
18812344321
17751229900
15912344432
*/