第1题:什么是贪婪模式和非贪婪模式?
什么是贪婪模式和非贪婪模式?
比如{3,5}这个量词,要是在句子中出现了十次,那么他是每次匹配三个还是五个,反正3、4、5都满足3~5的条件
量词在默认下是尽可能多的匹配的,也就是大家常说的贪婪模式
'123456789'.match(/\d{3,5}/g); //["12345", "6789"]
既然有贪婪模式,那么肯定会有非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,做法很简单,在量词后加上?即可
'123456789'.match(/\d{3,5}?/g); //["123", "456", "789"]
总结
- 在贪婪(默认)模式下,正则引擎尽可能多的重复匹配字符
- 在非贪婪模式下,正则引擎尽可能少的重复匹配字符
第2题:写一个函数isValidUsername(str)
,判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。
function isValidUsername(str){
return /^\w{6,20}$/.test(str);
}
var str="asd562is_";
console.log(isValidUsername(str));
第3题:写一个函数isPhoneNum(str)
,判断用户输入的是不是手机号。
function isPhoneNum(str){
return /^(\+86-)?1[356789]\d{9}$/.test(str);
}
var str="+86-15706890196";
console.log(isPhoneNum(str));
第4题:写一个函数isEmail(str)
,判断用户输入的是不是邮箱。
function isEmail(str){
return /^\w+@[\w.]+$/.test(str);
}
var str = '12345678@qq.com'
console.log(isEmail(str));
第5题:写一个函数trim(str)
,去除字符串两边的空白字符。
function trim(str){
return str.replace(/^\s+|\s+$/g,"");
}
console.log(trim(" wwtrdsfcf "));
第6题:\d
,\w
,\s
,[a-zA-Z0-9]
,\b
,.
,*
,+
,?
,x{3}
,^
,$
分别是什么?
字符 | 含义 |
---|---|
\d | 数字字符,等价[0-9] |
\w | 单词字符,字母、数字下划线,等价[a-zA-Z_0-9] |
\s | 空白符(包含包括:空格符 ,制表符 ,回车符,换行符 ,垂直换行符,换页符 |
[a-zA-Z0-9] | 单词字符,字母、数字 |
\b | 单词边界 |
. | 除了回车符和换行符之外的所有字符 |
* | 出现零次或多次(任意次) |
+ | 出现一次或多次(至少出现一次) |
? | 出现零次或一次(最多出现一次) |
x{3} | 匹配3个x('xxx'),即/xxx/ |
^ | 以xxx开头 |
$ | 以xxx结尾 |