美文网首页
正则表达式

正则表达式

作者: antimony | 来源:发表于2019-03-18 11:49 被阅读0次

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

    量词在默认下是尽可能多的匹配的,就是贪婪模式;非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试。


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

    function isValidUsername(str){
      reg = /^[\w]{6,20}$/;//^$来保证str整个都符合正则
      return reg.test(str);
    }
    console.log(isValidUsername('sfsdfdsafdda'));
    

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

    function isPhoneNum(str){
      reg = /^(\+86)?1[356789]\d{9}$/;//加号需要转义
      return reg.test(str);
    }
    console.log(isPhoneNum('13671575015'));
    

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

    function isEmail(str){
      var reg = /^(\w)(.*)@\w{1,}\.(com|cn)$/;//邮箱不能以空白字符开头,并且注意.的转义
      return reg.test(str);
    }
    console.log(isEmail(str)('13671573015'));
    

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

    function trim(str){
      reg = /(^\s+)|(\s+$)/g;//以空白字符开始或结尾
      return str.replace(reg,'');//用空字符串替换
    }
    console.log(trim('     dsfsfsd      '));
    

    6. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?

    \d,\w,\s都是预定义类,预定类的表格如下:

    字符 等价类 含义
    . [^\r\n] 除了回车符和换行符之外的所有字符
    \d [0-9] 数字字符
    \D [^0-9] 非数字字符
    \s [\t\n\x0B\f\r] 空白符
    \S [^\t\n\x0B\f\r] 非空白符
    \w [a-zA-Z_0-9] 单词字符,字母、数字下划线
    \W [^a-zA-Z_0-9] 非单词字符

    [a-zA-Z0-9]是字符类,表示单词字符、字母、数字。
    字符类
    一般情况下正则表达式一个字符(转义字符算一个)对应字符串一个字符,表达式 jirengu 的含义是

    image
    但是我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个

    \b是一个边界,边界列表如下:

    字符 含义
    ^ 以xxx开头
    $ 以xxx结尾
    \b 单词边界
    \B 非单词边界

    例子:

    var str = 'hello1 world hello2 123456 \t \r jirengu \n ruoyu hello3'
    str.match(/hello\d/g)   // ["hello1", "hello2", "hello3"]
    str.match(/^hello\d/g)  // ["hello1"]
    str.match(/hello\d$/g)   // ["hello3"]
    
    var str2 = 'hello1 whello9orld hello2 12-hello8-3456 \t \r jirengu \n ruoyu hello3'
    str2.match(/\bhello\d\b/g)   //["hello1", "hello2", "hello8", "hello3"] 
    //注意-也用于区分单词边界
    

    字符 含义
    . 除了回车符和换行符之外的所有字符
    * 出现零次或多次
    + 出现一次或多次(至少出现一次)
    ? 出现零次或一次(最多出现一次)
    x{3} 匹配x 出现 3 次
    ^ 在正则表达式里面,是以 xxx 开头;在中括号里面,是匹配除了它以外的
    $ 以 xxx 结尾

    相关文章

      网友评论

          本文标题:正则表达式

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