\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]
匹配范围类 小写字母a-z
大写字母 A-Z
和数字 0-9
-
\b
匹配单词边界
var str ='hello world';
/llo\b/.test(str); // true 匹配边界是llo
/wor\b/.test(str); // false 匹配边界是wor
-
.
匹配 [^\r\n]
除了回车符和换行符之外的所有字符
-
*
匹配 出现零次或多次(任意次)
-
+
匹配 出现一次或多次(至少出现一次)
-
?
匹配 出现零次或一次(最多出现一次)
-
x{3}
匹配 x
出现3次
-
^
匹配 以xxx开头
-
$
匹配 以xxx结束
写一个函数trim(str),去除字符串两边的空白字符
var str = ' hello jirengu ';
function trim(str){
return str.replace(/^\s+|\s+$/g,'');
}
trim(str);
写一个函数isEmail(str),判断用户输入的是不是邮箱
var str = 'jirengu@admin.com';
function isEmail(str){
return /^\w+@\w+\.(com|cn|com\.cn)$/.test( str );
}
isEmail(str);
写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
return /^1[3|5|6|7|8]\d{9}$/.test( str )
}
isPhoneNum('13266660000');
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
return /^\w{6,20}$/.test( str )
}
isValidUsername('a_3EDdfd');
写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(str){
if(str.length < 6 || str.length > 20){
return false;
}
var num = 0;
if(/[A-Z]/.test(str)){
num++;
}
if(/[a-z]/.test(str)){
num++;
}
if(/[0-9]/.test(str)){
num++;
}
if(/_/.test(str)){
num++;
}
return num >= 2;
}
isValidPassword('qweqeqew'); // false
isValidPassword('qweqe111'); // true
写一个正则表达式,得到如下字符串里所有的颜色
var re = /#[0-9a-fA-F]{6}/g; // #号开始 匹配[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']
下面代码输出什么? 为什么? 改写代码,让其输出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
// 输出 [""hunger" , hello "world""]
// * 匹配出现零次或多次(任意次), 量词在默认下是尽可能多的匹配的,也就是贪婪模式
var reg = /".*?"/g;
str.match(reg);
// 输出 [""hunger"", ""world""]
// 让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,做法很简单,在量词后加上?即可