20170115正则表达式

20170115-正则表达式

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

  • \d 代表0-9的任意一个数字
  • \w 代表[a-zA-Z_0-9], 单词字符,字母、数字下划线
  • \s 代表[\t\n\x0B\f\r] 空白符
  • [a-zA-Z0-9] 代表单词字符,字母、数字下划线,等价\w
  • \b 单词边界
  • . 任意字符
    • 量词,出现零次或多次(任意次)
    • 量词, 出现一次或多次(至少一次)
  • ?量词,出现零次或一次
  • x{3},x出现3次
  • ^$,以开头,以结尾

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

function trim(str){
    var reg = /\s*|\s$/g;
    return str.replace(reg,'');
}

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

function isEmail(str){
    var reg = /\w+@\w+.+/;
    return reg.test(str);
}

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

function isPhoneNum(str){
    var reg = /^1[3|5|7|8]\d{9}$/;
    return reg.test(str);
}

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

function isValidUsername(str){
    var reg = /^\w{6,20}$/;
    return reg.test(str);
}

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

function isValidPassword(str){
    if((str.length<6)||(str.length>20)){
        return "请重新输入"
    }
    var reg = /(^\d{6,20}$)|(^[A-Z]{6,20}$)|(^(a-z){6,20}$)|^_{6,20}$|\W/;
    if(reg.test(str)){
        return "不合法";
    }else{
        return "合法";
    }
}

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

var re = /(#([0-9a-fA-F]){3})|(#([0-9a-fA-F]){6}(?=;))/;
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);

改成如下代码:

var pat =  /(".*?")/mg;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容