正则表达式知识点

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

1
2
3
function trim(str){
return str=str.replace(/^\s+|\s+$/g,'');
}

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

字符含义
\d匹配0-9之间的任一数字,相当于[0-9]
\w匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
\s匹配空格(包括制表符、空格符、断行符等),相等于[\t\r\n\v\f]
[a-zA-Z0-9]匹配任意的大小写字母、数字
\b匹配空格(包括制表符、空格符、断行符等),相等于[\t\r\n\v\f]
.匹配除回车(\r)、换行(\n)以外的所有字符
*星号表示某个模式出现0次或多次,等同于{0,}
+加号表示某个模式出现1次或多次,等同于{1,}
?问号表示某个模式出现0次或1次,等同于{0, 1}
x{3}表示’x’连续出现三次
^1. ^ 表示字符串的开始位置;2.方括号内的第一个字符是 ^ ,则表示除了字符类之中的字符,其他字符都可以匹配
$表示字符串的结束位置

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

1
2
3
function isEmail(str){
return (/^[a-zA-Z0-9]+[(\w)*(\.)?]*@\w+\.[a-zA-Z]+$/).test(str);
}

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

1
2
3
function isPhoneNum(str){
return (/^(\+86-)?1[345678]\d{9}$/).test(str);
}

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

1
2
3
function isValidUsername(str){
return (/^\w{6,20}$/).test(str);
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*第一种*/
function isValidPassword(str){
var reg = /^\w{6,20}$/;
if(reg.test(str)){
if((/^[a-z]+$/).test(str)){
return false;
}else if((/^[A-Z]+$/).test(str)){
return false;
}else if((/^[0-9]+$/).test(str)){
return false;
}else if((/^[_]+$/).test(str)){
return false;
}else{
return true;
}
}else{
return false;
}
}
/*第二种*/
function isValidPassword(str){
var reg = /^\w{6,20}$/;
var reg1 = /(^[A-Z]+$)|(^[a-z]+$)|(^[0-9]+$)|(^[_]+$)/
if(reg.test(str)){
if(reg1.test(str)){
return false;
}else{
return true;
}
}else{
return false;
}
}

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

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

下面代码输出什么? 为什么? 改写代码,让其输出[“”yoowin””, “”world””].

输出[“”yoowin” , hello “world””]; 因为这是贪婪模式,会匹配到最后一个双引号才停止,改为非贪婪模式就会只要有符合条件的就会匹配

1
2
3
var str = 'hello "yoowin" , hello "world"';
var pat = /".*?"/g;
str.match(pat);
0%