JS正規表現使用の詳細
5867 ワード
簡単に言えば、正規表現はモードマッチングと置換に使用できる強力なツールです.文字列のパターンをテストします.たとえば、入力文字列をテストして、電話番号モードまたはクレジットカード番号モードが存在するかどうかを確認できます.これをデータ有効性検証と呼びます.テキストを置換します.ドキュメントで正規表現を使用して特定の文字を識別し、すべて削除したり、別の文字に置き換えたりできます.パターンマッチングに基づいて文字列からサブ文字列を抽出します.テキストまたは入力フィールドで特定のテキストを検索できます.基本文法は正規表現の機能と役割を初歩的に理解した後、正規表現の文法フォーマットを具体的に見てみましょう.正規表現の形式は、一般に、/love/デリミタの間にある部分がターゲットオブジェクトで一致するモードです.ユーザは、一致するオブジェクトを検索するモードの内容を"/"デリミタの間に入れればよい.ユーザーがより柔軟にモードコンテンツをカスタマイズできるように、正規表現には「メタ文字」が用意されています.メタ文字とは、正規表現において特殊な意味を持つ専用文字であり、その先頭文字(メタ文字の前に位置する文字)のターゲットオブジェクトにおける出現パターンを規定するために使用することができる.よく使われるメタ文字には、「+」、「*」、「?」があります.「+」メタ文字は、その先頭文字がターゲットオブジェクトに1回以上連続して表示される必要があることを示します.「*」メタ文字は、先頭文字がターゲットオブジェクトに0回または複数回連続して表示される必要があることを示します.“?”メタ文字は、そのプリアンブルがターゲットオブジェクトに0回または1回連続して表示される必要があることを示します.次に、正規表現メタ文字の具体的な適用について説明します./fo+/上記の正規表現には「+」のメタ文字が含まれているため、ターゲットオブジェクトの「fool」、「fo」、または「football」など、アルファベットfの後ろに1つ以上のアルファベットoが連続して現れる文字列と一致することを示す./eg*/上記の正規表現には「*」のメタ文字が含まれているため、ターゲットオブジェクトの「easy」、「ego」、または「egg」など、アルファベットeの後ろにゼロまたは複数のアルファベットgが連続して現れる文字列と一致することを示す./Wil?/上記の正規表現には「?」が含まれているからです.ターゲットオブジェクトの「Win」、または「Wilson」など、アルファベットiの後ろに0文字または1文字の文字列が連続して現れる文字列と一致することを示すメタ文字.何文字マッチするか分からないことがあります.このような不確実性に適応するために,正規表現は限定子の概念をサポートする.これらの制限子は、正規表現の特定のコンポーネントがマッチングを満たすために何回現れるかを指定します.{n}nは非負の整数です.決定されたn回を一致させる.例えば、「o{2}」は「Bob」の「o」に一致しないが、「food」の2つのoに一致する.n,}nは非負の整数です.少なくともn回マッチングします.例えば、「o{2,}」は「Bob」の「o」に一致しないが、「foooood」のすべてのoに一致する.o{1,}'は'o+'に等価である.o{0,}'は'o*'に等価である.{n,m}mおよびnはいずれも非負の整数であり、ここでn<=mである.最小はn回、最大はm回マッチングします.たとえば、「o{1,3}」は「fooooood」の最初の3つのoに一致します.'o{0,1}'は'o?'に等しい.カンマと2つの数の間にスペースがないことに注意してください.メタ文字に加えて、ユーザはマッチングオブジェクトにモードが現れる頻度を正確に指定することもできる.例えば、/jim{2,6}/上記正規表現所定文字mは、マッチング対象において2~6回連続して出現することができるので、上記正規表現はjimmyやjimmmyなどの文字列とマッチングすることができる.正規表現の使い方を初歩的に理解した後、他のいくつかの重要なメタ文字の使い方を見てみましょう.コード1.s:tabキーと改行を含む単一のスペース記号を一致させるために使用します. 2. S:1つのスペース以外のすべての文字を一致させるために使用します. 3. d:0から9までの数字を一致させる. 4. w:アルファベット、数字、下線文字を一致させるために使用されます. 5. W:wと一致しないすべての文字を一致させるために使用します. 6. . :改行以外のすべての文字に一致します.(説明:sとSおよびwとWを互いに逆演算と見なすことができます)次に、正規表現で上記のメタ文字をどのように使用するかを例に示します./s+/上記の正規表現は、ターゲットオブジェクトの1つ以上のスペース文字を一致させるために使用できます./d 000/複雑な財務諸表を持っている場合は、上記の正規表現を使用して、総額千元に達するすべての金額を簡単に見つけることができます.前述したメタ文字に加えて、正規表現には、ロケータというよりユニークな専用文字があります.ロケータは、ターゲットオブジェクトにおけるマッチングモードの出現位置を指定するために使用されます.一般的に使用されるロケータには、「^」、「$」、「b」および「B」が含まれます.コード1."^"ロケータは、一致パターンをターゲット文字列の先頭に表示する必要があることを規定する.「$」ロケータは、一致モードがターゲットオブジェクトの最後に表示されなければならないことを規定する.「b」ロケータは、一致モードがターゲット文字列の先頭または末尾の2つの境界の1つに表示されなければならないことを規定する.「B」ロケータは、一致するオブジェクトがターゲット文字列の先頭と末尾の2つの境界内にある必要があることを示します.すなわち、マッチングオブジェクトは、ターゲット文字列の先頭としても、ターゲット文字列の末尾としても使用できません.同様に,「^」と「$」および「b」と「B」を互いに逆演算する2組のロケータと見なすこともできる.たとえば、/^hell/上記の正規表現には「^」ロケータが含まれているため、ターゲットオブジェクトの「hell」、「hello」または「hellhound」で始まる文字列と一致することができます./ar$/上記の正規表現には「$」ロケータが含まれているため、ターゲットオブジェクトの「car」、「bar」または「ar」で終わる文字列と一致することができます./bbom/上記の正規表現モードは「b」ロケータで始まるため、ターゲットオブジェクトの「bomb」または「bom」で始まる文字列と一致します./manb/上記の正規表現モードは「b」ロケータで終わるので、ターゲットオブジェクトの「human」、「woman」または「man」で終わる文字列と一致します.ユーザがより柔軟にマッチングモードを設定できるようにするために、正規表現は、ユーザが特定の文字に限定されることなく、マッチングモードにおいてある範囲を指定することを可能にする.例えば、コード1./[A-Z]/上記の正規表現は、AからZまでの任意の大文字と一致します. 2./[a-z]/上記の正規表現は、aからzまでの任意の小文字と一致します. 3./[0-9]/上記の正規表現は、0から9の範囲の任意の数値と一致します. 4./([a-z][A-Z][0-9])+/上記の正規表現は、「aB 0」などのアルファベットと数字からなる文字列と一致します.ここで、正規表現で「()」を使用して文字列を組み合わせることができることに注意してください.「()」記号に含まれる内容は、ターゲットオブジェクトに同時に表示される必要があります.したがって、上記の正規表現は、abcの最後の文字が数字ではなくアルファベットであるため、abcなどの文字列と一致しません.正規表現でプログラミングロジックの「または」のような演算を実現し、複数の異なるモードのいずれかをマッチングする場合は、パイプシンボル「|」を使用します.たとえば、/to|too|2/(上記の正規表現は、ターゲットオブジェクトの「to」、「too」、または「2」と一致します.正規表現には、否定記号[^]」という比較的一般的な演算子もあります.前述したロケータ「^」とは異なり、否定記号「[^]」は、ターゲットオブジェクトにモードで指定された文字列が存在しないことを規定しています.たとえば、/[^A-C]/上記の文字列は、ターゲットオブジェクトのA、B、およびC以外の任意の文字と一致します.一般に、「^」が「[]」内に現れると否定演算子と見なされる.一方、"^"が"[]の外にある場合、または"[]がない場合は、ロケータとみなされます.最後に、ユーザーが正規表現のモードにメタ文字を追加し、一致するオブジェクトを検索する必要がある場合は、エスケープ記号""を使用します.たとえば、/Th*/上記の正規表現は、「The」などではなくターゲットオブジェクトの「Th*」などと一致します.正規表現を構築した後、数学式のように値を求めることができます.すなわち、左から右へ、優先順位順に値を求めることができます.優先度は、コード1.1.エスケープ2.2.(),(?,(?=),[]丸カッコと角カッコ3. 3.*, +, ?, {n},{n,},{n,m}限定子4.4.^,$,anymetacharacterの位置と順序5.5.|"または"操作JavaScript 1.2には、正規表現の一致操作に使用できる強力なRegExp()オブジェクトがあります.ここでtest()メソッドは、ターゲットオブジェクトにマッチングモードが含まれているかどうかを確認し、対応するtrueまたはfalseを返します.JavaScriptを使用して、ユーザーが入力したメールアドレスの有効性を検証するスクリプトを作成できます.コード#コード#
1. <html>
2. <head>
3. <script language= "Javascript1.2 ">
4. <!-- start hiding
5. function verifyAddress(obj)
6. {
7. var email = obj.email.value;
8. var pattern =
9. /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
10. flag = pattern.test(email);
11. if(flag)
12. {
13. alert(“Your email address is correct!”);
14. return true;
15. }
16. else
17. {
18. alert(“Please try again!”);
19. return false;
20. }
21. }
22. // stop hiding -->
23. </script>
24. </head>
25. <body>
26. <form onSubmit= "return verifyAddress(this); ">
27. <input name= "email " type= "text ">
28. <input type= "submit ">
29. </form>
30. </body>
31. </html>