题目一、\d
,\w
,\s
,[a-zA-Z0-9]
,\b
,.
,*
,+
,?
,x{3}
,^
,$
分别是什么?
正则 | 作用 |
---|---|
\d |
匹配一个数字 |
\w |
匹配数字、字母、下划线,等价[a-zA-Z0-9_]
|
\s |
匹配空白符 |
[a-zA-Z0-9] |
匹配数字、字母 |
\b |
匹配单词边界 |
. |
匹配除空白符的所有字符 |
* |
匹配 0 次或者多次 |
+ |
匹配 1 次或者多次 |
? |
匹配 0 次或者 1 次 |
x{3} |
匹配 x 连续出现 3 次 |
^ |
取反、或者以某某开头 |
$ |
以某某结尾 |
题目二、写一个函数 trim(str) ,去除字符串两边的空白字符
function trim (str){
return str.replace(/(^\s*) | (\s*$)/g, '')
}
var str = ' aa aaa '
console.log(trim(str))
题目三、写一个函数 isEmail(str) ,判断用户输入的是不是邮箱
由于邮箱格式多种多样,没有一个统一的标准,所以我假设这个邮箱是个常规的邮箱。
function isEmail(email){
return /^[\w]+@.+\..+$/.test(email)
}
var str = 'jack7770126@gmail.com'
console.log(isEmail(str))
题目四、写一个函数 isPhoneNum(str) ,判断用户输入的是不是手机号
手机号码的标准同样不统一,所以按一般情况处理
function isPhoneNum(PhoneNum){
return /^1[34578]\d{9}$/.test(PhoneNum)
}
var str = '18998286072'
console.log(isPhoneNum(str))
题目五、写一个函数 isValidUsername(str) ,判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(username){
return /^\w{6,20}$/.test(username)
}
var str = 'jack7770126'
console.log(isValidUsername(str))
题目六、写一个函数 isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(password){
if(!/^\w{6,20}$/.test(password)) return false
if(/^[a-z]{6,20}$/.test(password)) return false
if(/^[A-Z]{6,20}$/.test(password)) return false
if(/^[0-9]{6,20}$/.test(password)) return false
return true
}
var str = 'aaaa21aa'
console.log(isValidPassword(str))
题目七、写一个正则表达式,得到如下字符串里所有的颜色
var re = /*正则...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
结果
var re = /#([0-9a-f]{6}|[0-9a-f]{3})(?=;)/ig
var subj = "#fffcolor: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee; #fff;"
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 str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat);