美文网首页
正则表达式

正则表达式

作者: swhzzz | 来源:发表于2017-06-16 15:52 被阅读0次

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

    \d  表示匹配从0-9的数字
    \w 表示匹配a-z_A-Z
    \s  匹配空白符
    [a-zA-Z0-9]  匹配a-zA-Z0-9的一个字符
    \b 表示字符边界用来匹配单词  eg: /\bactive\b/ 但是\b有个缺陷 可以匹配到active-panel
    .  表示匹配除了\r\n之外的所有字符
    *  表示之前的字符可以出现任意次数
    +  表示之前的字符出现必须大于等于1次
    ?  表示之前的字符出现0次或者1次
    x{3}  表示x出现3次
    ^  放在[]里面时,表示取反,放外面时/^a/表示以字符a开始的字符串
    $  /c$/表示以c字符结尾的字符串
    

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

    方法一.直接调用字符串的trim()函数

    var str='   hello   swh  nihao  jirengu   ';
        str=str.trim();
        console.log(str);
    

    方法二.使用正则

    function trim(str){
        str=str.replace(/^\s+|\s+$/g,'');
        return str;
    }
    console.log(trim('   abc def   '));
    

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

    function isEmail(str){
        return /^\w+@.+(.com)$/.test(str);
    }
    console.log(isEmail('443878051@qq.com'));
    

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

    function isPhoneNum(str){
        return /^(\+86)?1[3456789]\d{9}$/.test(str);
    }
    console.log(isPhoneNum('13750847841'));
    

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

    function isValidUsername(str){
        return /^\w{6,20}$/.test(str);
    }
    console.log(isValidUsername('_13456'));
    

    写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)

    function isValidPassword(str){
        if(str.length<6 || str.length>20 || /\W/.test(str)) return false;  //排除长度不符合,排除出现除了字母下划线数字的情况
        var temp=0;   //测试是否存在a-z,A-Z,0-9,_;存在则+1
        if(/[a-z]/.test(str)) temp++;
        if(/[A-Z]/.test(str)) temp++
        if(/[0-9]/.test(str)) temp++
        if(/_/.test(str)) temp++;
        if(temp>=2)  return true;
        return false;
    }
    console.log(isValidPassword('01123d'));
    

    写一个正则表达式,得到如下字符串里所有的颜色

    var re = /#[a-fA-F0-9]{6}/g;
    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee ";
    console.log( subj.match(re) ); // ['#121212', '#AA00ef']
    

    下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].

    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*"/g;//匹配以冒号开头冒号结束,中间是不以\r\n出现任意次的字符
    str.match(pat); // "hunger" , hello "world",出现这种情况的原因是正则的贪婪模式,
    //贪婪模式指的是正则表达式会匹配最大符合条件的字符由于.*的存在使得"hunger" , hello "world"符合匹配的最大限制
    //所以输出为"hunger" , hello "world"
    

    要得到[""hunger"", ""world""]只需改为非贪婪模式即可

    var str = 'hello  "hunger" , hello "world"';
    console.log(str)
    var pat =  /".*?"/g;
    console.log(str.match(pat));
    

    司徒正美正则表达式

    相关文章

      网友评论

          本文标题:正则表达式

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