美文网首页
正则表达式

正则表达式

作者: Long_Dark | 来源:发表于2020-03-16 20:44 被阅读0次

    1.什么是贪婪模式和非贪婪模式?

    贪婪模式

    一般情况下,正则表达式在匹配过程中会尽可能多的匹配

    `ni hao "hello" jirengu "world"`.match(/".*"/g);  
    //[""hello" jirengu "world""]
    

    非贪婪模式

    让正则表达式尽可能少的匹配,就是说一旦成功匹配不再继续尝试。在量词后加上+即可

    `ni hao "hello" jirengu "world"`.match(/".*?"/g);  //[""hello" jirengu "world""] 
    //[""hello"", ""world""]
    
    字符 说明 示例
    字符集/通配符 + 重复运算符 贪婪模式,匹配尽可能多的内容,能匹配多少就匹配多少 r'*(.+)*' =>能匹配 abab*
    字符集/通配符 + 重复运算符 + “?” 非贪婪模式,匹配较少的内容,一旦匹配成功即退出匹配 r'*(.+)*' => <br />只能匹配 ab

    重复运算符 默认是贪婪模式的;重复运算符 + ? 能够将重复运算符指定为非贪婪模式的。

    2.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名

    写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)

    //写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
    function isValidUsername(str){
      var reg = /^\w{6,20}$/g;   //6到20位以数字开头数字结尾的字符串
      return reg.test(str)
    }
    var str = "1dji22.dfefgdaER32i"
    var 合法 = "合法"
    var 不合法 = "不合法"
    var 结果 = isValidUsername(str)?console.log(合法):console.log(不合法);
    console.log(str.length)   //19
    console.log(结果)   //不合法
    

    3.写一个函数isPhoneNum(str),判断用户输入的是不是手机号

    //写一个函数isPhoneNum(str),判断用户输入的是不是手机号
    function isPhoneNum(str){
      var reg = /^1\d{10}$/g;   //1开头,11位的数字
      return reg.test(str)
    }
    var str = "131111111d2"
    var 是 = "是手机号"
    var 不是 = "不是手机号"
    var 结果 = isPhoneNum(str)?console.log(是):console.log(不是);
    console.log(str.length)
    console.log(结果)
    

    4.写一个函数isEmail(str),判断用户输入的是不是邮箱

    //写一个函数isEmail(str),判断用户输入的是不是邮箱
    function isEmail(str){
      var reg = /^.*@{1}.*(\.){1}.*$/g;   //中间包含1个@和1个.的任意长度字符串
      return reg.test(str)
    }
    var str = "j*hf-5_85@email.baidu.top"
    var 是 = "是邮箱"
    var 不是 = "不是邮箱"
    var 结果 = isEmail(str)?console.log(是):console.log(不是);
    console.log(str.length)  
    console.log(结果)   //是邮箱
    

    5.写一个函数trim(str),去除字符串两边的空白字符

    //写一个函数trim(str),去除字符串两边的空白字符
    function trim(str){
      var reg = /^\s*|\s*$/g;   //开头和结尾有多少个空白符都去掉
      return str.split(reg)
    }
    var str = "   djf iuh df jd "
    var s = trim(str).join('')
    console.log(s)  //djf iuh df jd
    

    6. 以下分别是什么意思

    \d   //数字字符
    \w   //单词字符
    \s   //空白符
    [a-zA-Z0-9]   //包含0-9 a-z A-Z的字符
    \b   //单词边界  匹配一个单词的边界,就是位于单词字符\w和非单词字符\W之间的位置,或者\w和他开头或者结尾之间的位置
    .   //除换行符号和其他unicode行终止符外任意字符
    *   //匹配前一项0次或者多次 等价于{0,}
    +   //匹配前一项1次或者多次 等价于{1,}
    ?   //匹配前一项0次或者1次,等价于{0,1}
    x{3}  //匹配x3次
    ^   //在[]内是取反,在[]外是表示匹配字符串的开头,在多行检索中,匹配一行的开头
    $   //表示匹配字符串的结尾,在多行检索中,匹配一行的结尾
    

    相关文章

      网友评论

          本文标题:正则表达式

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