1. \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: 单词边界
.: [^\r\n] 除了回车符和换行符之外的所有字符
*: 出现零次或多次(任意次)
+: 出现一次或多次(至少出现一次)
?: 出现零次或一次(最多出现一次)
x{3}: x出现三次
^: 以xxx开头
$: 以xxx结尾
复制代码
2.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)。
function isValidUsername(str){
return /^\w{6,20}$/.test(str)
}
console.log(isValidUsername('mxlwod789'))//true
console.log(isValidUsername('123fhy'))//false
复制代码
3.写一个函数isPhoneNum(str),判断用户输入的是不是手机号。
function isPhoneNum(str){
return /^1[34578]\d{9}$/g.test(str)
}
console.log(isPhoneNum(13754879652))//true
console.log(isPhoneNum(1648954875))//false
复制代码
4.写一个函数isEmail(str),判断用户输入的是不是邮箱。
function Email(str){
return /^[0-9a-zA-Z]+@[a-zA-Z]+(.com)+$/.test(str)
}
console.log(Email('136987521@qq.com'))//true
复制代码
5.写一个函数trim(str),去除字符串两边的空白字符。
function trim(str){
return str.replace( /^\s*|\s*$/g,")
}
console.log(trim(' abc df fg '))//abc df fg))
复制代码
6.什么是贪婪模式和非贪婪模式?
var str = 'you "are" so "beautiful"'
str.match(/".*"/g)//[""are" so "beautiful""]
复制代码
贪婪模式
第一个查找字符是",正则在第五个位置找到匹配它,第二个字符是.,.意思是任意字符,*.说明任意字符可以重复一次甚至多次,所以就一直匹配到最后。再后面突然发现,咦!还有一个正则"要匹配,(为什么说它贪婪,自顾自的一直匹配下去也不先看看其他的)因因此正则引擎倒过来回溯,换句话说就是一个字符一个字符倒过来缩减匹配,l不是,u不是,f不是就一直找啊找。终于找到了它的最爱,所以最后输出为[""are" so "beautiful""].非贪婪模式相反,输出结果为["are" "beautiful"] var str = "you "are" so "beautiful""
偷偷配张图,一目了然。
共勉