美文网首页
正则表达式

正则表达式

作者: 任少鹏 | 来源:发表于2017-04-17 18:04 被阅读22次
    1. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分别是什么?
    • \d:匹配0-9之间的任一数字,相当于[0-9]
    • \w:匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
    • \s :用于查找空白字符。空白字符可以是:<strong>空格符、制表符、回车符 、换行符、垂直换行符、换页符。</strong>
    • [a-zA-Z0-9]:匹配任意的字母和数字
    • \b:匹配单词边界。
    • .:用于查找单个字符,除了换行和行结束符。
    • *:匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa ...
    • +:匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa...
    • ?:匹配前面元字符0次或1次,/ba*/将匹配b,ba
    • x{3}:查找x出现3次的元素

    {n} 精确匹配n次
    {n,} 匹配n次以上
    {n,m} 匹配n-m次

    • ^ :匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
    • $ :匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
      其他:
    • x|y: 匹配x或y
    • \W :匹配非单词字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
    • \S :匹配一个非空白字符,等于/[^\n\f\r\t\v]/
    • \n :匹配一个换行符
    • \r :匹配一个回车符
    • \t: 匹配一个制表符
    • \v :匹配一个重直制表符
    • [xyz] :字符集(character set),匹配这个集合中的任一一个字符(或元字符)
    • [^xyz] :不匹配这个集合中的任何一个字符
    • \cX :X是一个控制符,/\cM/匹配Ctrl-M
    2.写一个函数trim(str),去除字符串两边的空白字符
    function trim(str){
    return str.replace(/^\s+|\s+$/g, '');
    }
    
    3.写一个函数isEmail(str),判断用户输入的是不是邮箱
    function isEmail(str){
        return /^[A-Za-z0-9._%-]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,4}$/.test(str)
    }
    
    4.写一个函数isPhoneNum(str),判断用户输入的是不是手机号
    function isPhoneNum(str){
        return /1[34578]\d{9}$/.test(str);
    }
    
    5.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
    function isValidUsername(str) {
        return /^\w{6,20}$/.test(str);
    }
    
    6.写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少包括两种)
    function isVaildPassword(str) {
        if(str.length < 6 || str.length >20) return false;
        if(/^[A-Z]+$/.test(str)) return false;
        if(/^[a-z]+$/.test(str)) return false;
        if(/^\d+$/.test(str)) return false;
        if(/^_+$/.test(str)) return false;
        return true;
    }
    
    7: 写一个正则表达式,得到如下字符串里所有的颜色
    var re = /#[a-zA-Z0-9]{6}/g;
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 "
    console.log( subj.match(re) ) 
    
    8.下面代码输出什么? 为什么? 改写代码,让其输出['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)
    

    相关文章

      网友评论

          本文标题:正则表达式

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