JavaScriptオブジェクト指向基礎-正規表現

9915 ワード

正規表現の概念
  • 正規表現は、文字列抽出、文字列置換、文字列検証など、文字列動作において厄介な場面を解決するために用いられる.
  • はよく使われています.フォーム検証:数字かどうか、電話番号であり、メールボックスです.
  • 文字列置換:
  • 文字列検索
  • 正規表現もjavascriptの中の一つのオブジェクトです.
  • test()方法
  • は、モードで文字列を検索し、結果に基づいてtrueまたはfalseを返します.
  • exec()方法
  • は、指定されたモードで文字列を検索し、検索されたテキストを返します.
  • マッチが見つからない場合、nullに戻ります.
  •     var reg = new RegExp();
        console.log(reg);
        // /(?:)/
    
        var reg = new RegExp();
        reg = /[1][3][7][\d]{8}/;
        var res = reg.test(13770795672);
        console.log(res);       
        // ture
        var res = reg.exec(13770795672);
        console.log(res);
        //       
        res = {
            0: "137707956",
            groups: undefined,
            index: 0,
            input: "13770795672",
            length: 1,
        }
    
    正規表現の適用
  • 正規表現を作成します.
  • var reg = new RegExp('a');
  • var reg = /a/;
  • は、文字列方法search()に正規表現を用いて検索する.
  • 正規表現を用いて検索文字列の「world」の大文字小文字無感度検索を実行します.
  •     var str = 'Hello world!';
        var res = str.search(/world/);
        console.log(res);
        //      6
    
  • は、文字列方法replace()に正規表現を用いて置換する.
  • 大文字と小文字は敏感です.
  •     var str = 'Hello world!';
        var res = str.replace(/Hello world!/, '  ,  !');
        console.log(res);
    
  • は、文字列方法match()に正規表現を用いてマッチングする.
  • 文字列方法match()は、正規表現方法exec()と一致した.
  •     var str = 'Hello world!';
        var res = str.match(/Hello world!/);
        console.log(res);
        //       
        res = {
            0: "world",
            groups: undefined,
            index: 6,
            input: "Hello world!",
            length: 1,
        }
    
        var str = /Hello world!/;
        var res = str.exec('Hello world!');
        console.log(res);
        //       
        res = {
            0: "world",
            groups: undefined,
            index: 6,
            input: "Hello world!",
            length: 1,
        }
    
    正規表現の特殊文字
    文字の種類
  • .
  • は、改行(\r)以外の任意の文字
  • を表しています.
  • マッチする場合、文字、/qq\.com/または/qq[.]com/
  •     var reg=/./;
        reg.test("a");      //true
        reg.test(".");      //true
        reg.test("\r");     //false
        reg.test("1\r");    //    1,     ,     :true
        reg.test("\r
    "); //false
  • \d
  • は、数字
  • を表しています.
        var reg=/\d/;
        reg.test("123abc"); //        ,     true
        reg.test("abcde");  //         ,     false
    
        //  :
        var _reg=/\d\d/;
        _reg.test("1b");    //   2     ,     :false
        _reg.test("a12c");  //  2     ,   :true
    
        //      :     11   
        var isCellphoneNumber=/\d\d\d\d\d\d\d\d\d\d\d/;
    
  • \D
  • は、\dの反動結果を表し、数字
  • ではないことを表しています.
        var reg=/\D/;
        _reg.test("123");   //      ,     :false
        _reg.test("123a");  //      ,     :true
    
        var reg2=/123\D5/;
        _reg.test("12345"); //false
        _reg.test("123b5"); //true
    
  • \w
  • はアルファベット、数字、アンダースコアにマッチしています.三者はその一つを満足すればいいです.
  •     var reg=/\w/;   
        reg.test("123");    //    ,   :true
        reg.test("a");      //true
        reg.test("1");      //true
        reg.test("_");      //true
        reg.test("-");      //false
        reg.test(".");      //false
    
        reg.test("1.");     //true
        reg.test("_\r
    "); //true reg.test("\r
    "); //false
  • \W
  • は\wの反対を表しています.アルファベット、数字、アンダースコア
  • ではありません.
        var reg = /\W/;
        reg.test('=');      // true
        reg.test('5');      // false
    
  • \s
  • は、空白文字(例えば、\r\tスペース)を表します.
  •     var reg=/\s/;
        reg.test("abc def");    //      ,   :true
        reg.test("abc\r123");   //    \r,   :true
        reg.test("abc");        //false
    
  • \S
  • は\sの取りで、空白文字ではない
  • です.
        var reg=/\S/;
        reg.test(" \r 
    "); // , false reg.test("123 abc"); // , true var reg3=/\s\S/; reg3.test(" a"); //true reg3.test("a "); //false reg3.test("a b"); //true
  • \
  • は、変換文字
  • を表しています.
        var reg=/./;    //              
        var reg=/\./;   //  .  
    
        var reg=/\//;   //       :/
        var reg=/[/]/;  //。。。。。。。。。
    
    文字セット
  • []
  • は、一定範囲の文字列を検索するために使用されます.
  •     var reg=/[1a2b3]/; //   5         ,      ,       
        reg.test("a");      //   :true
        reg.test("3");      //   :true
        reg.test("fg5678"); //             ,   :false
        reg.test("a999999");    //   :true
    
        var reg2=/[123][abc]/;
        reg2.test("2a");    //true
        reg2.test("3c");    //true
        reg2.test("asdfasdf1c");    //       1c,   :true
        reg2.test("39");    //   
    
        var reg2=/[0-9]/;   //    0-9  ,          :/\d/
        var reg3=/[a-z]/;   //      
        var reg4=/[A-Z]/;   //      
        var reg5=/[a-zA-Z]/;//      
        var reg6=/[A-Za-z]/;//..........
    
        var reg10=/[0-9abc]/;
        reg10.test("3");//true
        reg10.test("five");//false
        reg10.test("banana");//true
    
  • [^]
  • 検索範囲以外の文字列
  •     var reg=/[^123]/;   //  1      2      3 
        reg.test("a");      //true
        reg.test("3");      //false
        reg.test("123");    //  1,2,3     ,   :false
    
    文字の境界
  • ^は、マッチング開始文字列
  • を表す.
        var reg=/^abc/;         //   abc  
        reg.test("123abc123");  //    abc  ,   :false
        reg.test("abc123");     // abc  ,   :true
    
  • $は、マッチング終了文字列
  • を表している.
        var reg=/abc$/;         //   abc  
        reg.test("123abc");     //   :true
        reg.test("abc123");     //   :false
    
        var reg=/^abc$/;    //     abc
        reg.test("abc");    //   :true
        reg.test("123abc"); //   :false
    
    修飾子
  • i
  • は、大文字小文字に敏感でないマッチングを実行する.
  • g
  • は、グローバルマッチングを実行します.
  • m
  • は、複数行のマッチングを実行する.
  • 文字量詞
  • *
  • に0回以上の出現があります.
  •     var reg=/\d*/;
        reg.test("123");    //true
        reg.test("234");    
    
        var reg3=/1\d*/;
        reg3.test("123");   //true
        reg3.test("a123")   //true
        reg3.test("a1b");   //false
    
  • +
  • は1回または複数の
  • が現れます.
  • ?
  • は0回または1回の
  • が現れます.
  • {3}
  • 出現3回
  • {3,}
  • は少なくとも3回の
  • が現れます.
  • {3,5}
  • 出現3-5回
  •     var reg=/abc{3}/;           //    abccc
        reg.test("123abccc123");    //   :true
    
  • |
  • または
  •     var reg=/abc|123/;  //    abc  123
    
  • ()
  • パケット
  •     var reg=/(\d{3-4})-(\d{7,8})/;
        var arr="021-33335555".match(/(\d{3,4})-(\d{7,8})/)
        arr[0]  //  
        arr[1]  //  :021
        arr[2]  //  :333355555
        //    
        arr = {
            0: "021-33335555",
            1: "021",
            2: "33335555",
            groups: undefined,
            index: 0,
            input: "021-33335555",
            length: 3,
        }
    
        var reg = /(\d{3-4})-(\d{7,8})/;
        var res = "021-33335555".replace(/(\d{3,4})-(\d{7,8})/,'   :$1');
        console.log(res);
    
        //       data-       ?
        var str = "sjhsf hj-123data-sgfas123ga";
        var s1=str.replace(/data-[a-z0-9]+/,"");
        console.log(s1);
    
        //type  
        var type = Object.prototype.toString.call('1');
        console.log(type);
        //[object Xxxx]
        //type.replace(/\[object /,"").replace(/\]/,"").toLowerCase();
        var type2 = type.replace(/\[object |\]/g,"").toLowerCase();
        console.log(type2);
    
    正規表現を使う
  • フォーム検証
  •     //     ,4 16 (  ,  ,   ,  )
        var reg = /^[a-zA-Z0-9_-]{4,16}$/;
    
        //      ,  6 ,    1     ,1     ,1   ,1     
        var reg = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
    
        //     
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    
         //       
        var reg = /^[1][3][0-9]{9}$/;   
    
        //       
        var reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    
        // URL  
        var reg = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
    
        // IPv4    
        var reg = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
    
        //         
        var reg = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
    
        //     
        var reg = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;
    
        //     ,    
        var reg = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;
    
        // QQ    
        var reg = /^[1-9][0-9]{4,10}$/;
    
        //      
        var reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
    
        //      
        var reg = /^[                                 A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9     ]{1}$/;
    
        //       
        var reg = /[\u4E00-\u9FA5]/;