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;