美文网首页
正则大法好

正则大法好

作者: sarah_wqq | 来源:发表于2019-01-11 17:25 被阅读0次

    基础

    1、定位

    ^ 字符串的开始
    $ 字符串的结尾
    \b 匹配一个字边界,即字与空格间的位置。
    \B 非字边界

    2、数字字母

    \d \w
    [0-9] [a-z] [A-z]
    {n} 非负整数

    3、非打印字符

    \n 换行
    \r 回车
    \s 空白字符
    \S 非空白字符

    4、特殊字符

    + 一次或多次
    * 零次或多次
    . 除换行符 \n 之外的任何单字符
    () 提取匹配的字符串 (0-9)匹配字符串"0-9"本身
    (abc)? 表示这一组要么一起出现,要么不出现
    [] 限定字符集 [0-9]*匹配数字
    {n,m} 长度 [0-9]{0,9}表示长度为0到9的数字字符串
    [^] 排除
    | || 或

    5、修饰符

    i 大小写不敏感
    g 全局匹配

    6、

    + 和 * 贪婪匹配,匹配尽可能长的字符串
    +? 和 *? 懒惰匹配,匹配符合条件的尽量短的字符串
    (?!pattern) 过滤掉不包含的
    (?:pattern) 优化性能,不反悔子匹配结果,比如:
    (aaa)(bbb)(ccc)(?:ddd)(eee)可以用1获取(aaa)匹配到的内容,而3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)

    var str3 = "haabaab";
    str3.match(/h.*b/);    //haabaab
    str3.match(/h.*?b/);  //haab
    str3.match(/ha+/);    //haa
    str3.match(/ha+?/);  //ha
    
    var str = "hello123back, hello456back";
    str.match(/hello(?!456).*?back/);    //hello123back
    str.match(/(hello).*/);      //["hello123back, hello456back", "hello"]
    str.match(/(?:hello).*/);   //["hello123back, hello456back"]
    

    7、前置后置

    aaa(?=bbb) aaa后面必须是bbb
    exp1(?!exp2) aaa后面不是bbb

    (/a(?=b)/).test("xxxxabxxxx") //true
    (/a(?!b)/).test("xxxxabxxxx")  //false
    

    例子

    匹配IP的每一段
    ^([0-9]||[1-9][0-9]||1[0-9][0-9]||2[0-4][0-9]||25[0-5])$

    邮件地址
    ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/

    用法

    1.

    var reg = new RegExp("^[0-9]+$");
    reg.test(text);
    

    2.

    ( /^[0-9]+$/).test(text);
    

    3. replace

    text.replace(/aaa/g, "bbb");
    

    4.match

    text.match(exp);
    

    相关文章

      网友评论

          本文标题:正则大法好

          本文链接:https://www.haomeiwen.com/subject/brdxdqtx.html