美文网首页
正则表达式

正则表达式

作者: 饥人谷_林嘉俊 | 来源:发表于2017-09-04 22:44 被阅读12次

    http://www.cnblogs.com/yitian/archive/2008/11/14/1333569.html

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

    下面是一些常见的元字符:
    . 匹配除 \n 以外的任何字符(注意元字符是小数点)。
    [abcde] 匹配 abcde 之中的任意一个字符
    [a-h] 匹配 a 到 h 之间的任意一个字符
    [^fgh] 不与 fgh 之中的任意一个字符匹配
    \w 匹配大小写英文字符及数字 0 到 9 之间的任意一个及下划线,相当于 [a-zA-Z0-9_]
    \W 不匹配大小写英文字符及数字 0 到 9 之间的任意一个,相当于 [^a-zA-Z0-9_]
    \s 匹配任何空白字符,相当于 [ \f\n\r\t\v]
    \S 匹配任何非空白字符,相当于 [^\s]
    \d 匹配任何 0 到 9 之间的单个数字,相当于 [0-9]
    \D 不匹配任何 0 到 9 之间的单个数字,相当于 [^0-9]
    [\u4e00-\u9fa5] 匹配任意单个汉字(这里用的是 Unicode 编码表示汉字的 )

    下面是一些常见的限定符 ( 下表中 n 和 m 都是表示整数,并且 0<n<m) :
    * 匹配 0 到多个元字符,相当于 {0,}
    ? 匹配 0 到 1 个元字符,相当于 {0,1}
    {n} 匹配 n 个元字符
    {n,} 匹配至少 n 个元字符
    {n,m} 匹配 n 到 m 个元字符
    + 匹配至少 1 个元字符,相当于 {1,}
    \b 匹配单词边界
    ^ 字符串必须以指定的字符开始
    $ 字符串必须以指定的字符结束

    另外题目中的
    [a-zA-Z0-9] 包含所有英文小写字母a-z和大写字母A-Z,以及数字0-9
    x{3} 量词,表示x出现3次

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

    function trim(str){
       if(typeof str === 'string'){
        return str.replace(/^\s+|\s+$/g,'');
    }else{
       return '不是字符串';
    }
    }
    

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

    function isEmail(str){
       var email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
       return email.test(str);
    }
    

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

     function isPhoneNum(str){
       var num = /^1[0-9]{10}$/;
       return num.test(str);
    }
    

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

    function isVaildUsername(str){
     return /^\w{6,20}$/.test(str);
    }
    

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

    function isValidPassword(str){
    if(!/^\w{6,20}$/.test(str)){
            return false;
    }
    if(/^\d{6,20}$/.test(str)){
        return false;
    }
    if(/^[a-z]{6,20}$/.test(str)){
        return false;
    }
    if(/^[A-Z]{6,20}$/.test(str)){
        return false;
    }
    if(/^_{6,20}$/.test(str)){
        return false;
    }
    return true;
    }
    

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

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

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

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

    意思是:匹配以"开头"结束,且引号中为任意个除换行符和回车以外的任意字符,全局匹配。
    默认是贪婪模式,会尽可能多匹配,所以结果为

    [""hunger" , hello "world""]
    

    而要想得到[""hunger"", ""world""]的结果可以将正则改为如下代码:
    可以加上?变成非贪婪模式 尽可能少匹配

     var pat =  /".*?"/g;

    相关文章

      网友评论

          本文标题:正则表达式

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