\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分别是什么?
- \d 匹配一个一位数字(0到9)
- \w 匹配一个字母或一个一位数字或一个下划线
- \s 匹配任意的空白符,包括空格、制表符(Tab)、换行符、中文全角空格等
- [a-zA-Z0-9] 范围类,我们可以使用 x-y来连接两个字符表示从x到y的任意字符,这是个闭区间 [a-z0-9A-Z_]等同于\w
- \b 代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配任何字符,它只匹配一个位置。
- . 除了回车符和换行符之外的所有字符
- *出现零次或多次(任意次)
- +出现一次或多次(至少出现一次)
- ? 出现零次或一次(最多出现一次)
- {} 出现n次
- ^ 匹配你要用来查找的字符串的开头
- $ 匹配结尾。
写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
var reg = /^\s+|\s+$/g;
return str.replace(reg,'');
}
var result = trim(' a bccc d ')
console.log(result);
写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
var reg = /^\w+@\w+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
return reg.test(str);
}
var result = isEmail('398374199@qq.com');
console.log(result);
写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
var reg = /^(\+86)|1[34578]\d{9}$/;
return reg .test(str);
}
var result = isPhoneNum('13800138000');
console.log(result);
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
var reg = /^\w{6,20}$/;
return reg .test(str);
}
var result = isValidUsername('_peter_');
console.log(result);
写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(str){
var count = 0;
var reg = /^\w{6,20}$/;
if(!reg.test(str)){
return false;
}
if(/[a-zA-Z]/.test(str)){
count++;
}
if(/\d/.test(str)){
count++;
}
if(/[_]/.test(str)){
count++
}
console.log(count);
if(count < 2)
return false;
return true;
}
var result = isValidPassword('123qwe_2ddw6');
console.log(result);
写一个正则表达式,得到如下字符串里所有的颜色
var re = /#[a-fA-F0-9]{6}/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 ";
var result = subj.match(re);
console.log(result);
下面代码输出什么? 为什么? 改写代码,让其输出['hunger', 'world'].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g; // 贪婪匹配模式 尽可能匹配更多
var result = str.match(pat);
console.log(result);
//修改如下
var pat = /".*?"/g; //改为非贪婪模式
var result = str.match(pat);
console.log(result);