1.什么是贪婪模式和非贪婪模式?
贪婪模式
一般情况下,正则表达式在匹配过程中会尽可能多的匹配
`ni hao "hello" jirengu "world"`.match(/".*"/g);
//[""hello" jirengu "world""]
非贪婪模式
让正则表达式尽可能少的匹配,就是说一旦成功匹配不再继续尝试。在量词后加上+即可
`ni hao "hello" jirengu "world"`.match(/".*?"/g); //[""hello" jirengu "world""]
//[""hello"", ""world""]
字符 | 说明 | 示例 |
---|---|---|
字符集/通配符 + 重复运算符 | 贪婪模式,匹配尽可能多的内容,能匹配多少就匹配多少 | r'*(.+)*' =>能匹配 abab* |
字符集/通配符 + 重复运算符 + “?” | 非贪婪模式,匹配较少的内容,一旦匹配成功即退出匹配 | r'*(.+)*' => <br />只能匹配 ab |
重复运算符 默认是贪婪模式的;重复运算符 + ? 能够将重复运算符指定为非贪婪模式的。
2.写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
//写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
var reg = /^\w{6,20}$/g; //6到20位以数字开头数字结尾的字符串
return reg.test(str)
}
var str = "1dji22.dfefgdaER32i"
var 合法 = "合法"
var 不合法 = "不合法"
var 结果 = isValidUsername(str)?console.log(合法):console.log(不合法);
console.log(str.length) //19
console.log(结果) //不合法
3.写一个函数isPhoneNum(str),判断用户输入的是不是手机号
//写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
var reg = /^1\d{10}$/g; //1开头,11位的数字
return reg.test(str)
}
var str = "131111111d2"
var 是 = "是手机号"
var 不是 = "不是手机号"
var 结果 = isPhoneNum(str)?console.log(是):console.log(不是);
console.log(str.length)
console.log(结果)
4.写一个函数isEmail(str),判断用户输入的是不是邮箱
//写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
var reg = /^.*@{1}.*(\.){1}.*$/g; //中间包含1个@和1个.的任意长度字符串
return reg.test(str)
}
var str = "j*hf-5_85@email.baidu.top"
var 是 = "是邮箱"
var 不是 = "不是邮箱"
var 结果 = isEmail(str)?console.log(是):console.log(不是);
console.log(str.length)
console.log(结果) //是邮箱
5.写一个函数trim(str),去除字符串两边的空白字符
//写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
var reg = /^\s*|\s*$/g; //开头和结尾有多少个空白符都去掉
return str.split(reg)
}
var str = " djf iuh df jd "
var s = trim(str).join('')
console.log(s) //djf iuh df jd
6. 以下分别是什么意思
\d //数字字符
\w //单词字符
\s //空白符
[a-zA-Z0-9] //包含0-9 a-z A-Z的字符
\b //单词边界 匹配一个单词的边界,就是位于单词字符\w和非单词字符\W之间的位置,或者\w和他开头或者结尾之间的位置
. //除换行符号和其他unicode行终止符外任意字符
* //匹配前一项0次或者多次 等价于{0,}
+ //匹配前一项1次或者多次 等价于{1,}
? //匹配前一项0次或者1次,等价于{0,1}
x{3} //匹配x3次
^ //在[]内是取反,在[]外是表示匹配字符串的开头,在多行检索中,匹配一行的开头
$ //表示匹配字符串的结尾,在多行检索中,匹配一行的结尾