美文网首页
正则表达式

正则表达式

作者: LeeoZz | 来源:发表于2017-06-07 21:47 被阅读0次
    • \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?

    \d:元字符,匹配一个数字,等价于[0-9](匹配0到9中的一个);
    \w:元字符,匹配字母或数字或下划线或汉字,等价于[0-9a-zA-Z_];
    \s:元字符,匹配任意的空白符;
    [a-zA-Z0-9]:[]规定了一个范围,匹配当中的其中一个,示例则匹配a-z/A-Z/0-9中的一个,相当于\w(除了汉字);
    \b:元字符,匹配单词的开始或结束(单词边界):

    var a= "hello helloworld";
    var reg = /\bhello\b/;
    a.match(reg);
    //结果为"hello";
    

    .:元字符,匹配除换行符以外的所有字符;
    *:限定符,重复0次或更多次;
    +:限定符,重复1次或更多次,最少1次;
    ?:限定符,重复0次或1次;
    x{3}:限定符,x出现3次({n}重复n次;{n,m}重复n-m次(包括n,m);{n,}重复最少n次;{,m}重复最多m次);
    :在[]中意为取反([abc]匹配abc中任意一个,[abc]匹配除abc外的任意字符);其他时候可以匹配字符串的开头;
    $:匹配字符串的结束;(^hello&:匹配以hello开头,hello结尾的字符串)

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

     function trim(str) {
        return str.replace(/^\s+|\s+$/g,'') //匹配开头或结尾的空白字符,替换成'';
     }
    
    • 写一个函数isEmail(str),判断用户输入的是不是邮箱

     function isEmail(str) {
        var reg = /^[a-zA-Z\d_]+\@[a-zA-Z\d]+\.[a-zA-Z\d]+$/g;
        return reg.test(str);
     }
    
    • 写一个函数isPhoneNum(str),判断用户输入的是不是手机号

    function isPhoneNum(str) {
        var reg = /^1[3578]\d{9}$/g;
        return reg.test(str);
    }
    
    • 写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)

    function isValidUsername(str) {
        var reg = /^([a-zA-Z\d_]){6,20}$/g;
        return reg.test(str);
    }
    
    • 写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少包括两种)

    function isValidPassword(str) {
        if (/^[a-zA-Z0-9_]{6,20}$/g.test(str)) {
            if (/^[a-z]{6,20}$/g.test(str) || /^[A-Z]{6,20}$/g.test(str) || /^[0-9]{6,20}$/g.test(str) || /^[_]{6,20}$/g.test(str)) {
                return false;
            }else {
                return true;
            }
        }else {
            return false;
        }
    }
    
    • 写一个正则表达式,得到如下字符串里所有的颜色

    var re = /*正则...*/
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
    console.log( subj.match(re) )  // ['#121212', '#AA00ef']
    
    var re = /#[a-f\d]{6}/ig;
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee";
    console.log( subj.match(re) )
    
    • 下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""]

    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*"/g;
    str.match(pat);
    
    //输出[""hunger" , hello "world""];
    //正则表达式默认情况下是贪婪模式,会在满足条件的情况下尽可能多的进行匹配;
    //改写代码
    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*?"/g;  //添加?改成非贪婪模式,尽可能少的匹配;
    str.match(pat); //[""hunger"", ""world""]
    

    相关文章

      网友评论

          本文标题: 正则表达式

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