正则表达式
2017-05-09 本文已影响11人
kumabearplus
1、\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
- \w 表示[a-zA-Z_0-9]的单词字符,字母、数字下划线
- \s 表示[ \f\n\r\t\v]的空白字符
- [a-zA-Z0-9] 表示匹配大小写a-z,数字0-9的单个字符
- \b 表示单词边界
- ** . **表示匹配除回车、换行外所有字符
- *表示出现零次或多次
- +表示出现一次或多次
- ?表示零次或一次
- x{3}表示出现3次x
- ^出现在[]内表示非,出现在[]以外的表示以xxx开头
- $表示以xxx结尾
2、写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
var reg = /^\s+|\s+$/g;
return str.replace(reg,'')
}
var str1 = trim(' ct ct-1 ct-2 ')
console.log(str1)
3、 写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
var reg = /^\w+@\w+(\.\w+){1,}$/
if (reg.test(str)) {
return '输入的邮箱正确'
}else {
return '请输入正确的邮箱'
}
}
var str = isEmail('qdjuehh@yahoo.co.jp')
console.log(str)
4、写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
var reg = /^(\+86-)?1[3-8][0-9]{9}$/
if (reg.test(str)) {
return '输入的手机号码正确'
} else {
return '请输入正确的手机号码'
}
}
var str = isPhoneNum('13333333333')
console.log(str)
5、 写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
var reg = /^\w{6,20}$/
if (reg.test(str)) {
return '输入的用户名正确'
} else {
return '请输入正确的用户名'
}
}
var str = isValidUsername('a9_juhfjf')
console.log(str)
6、写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少至少包括两种)
function isValidPassword(str){
var reg = /^\w{6,20}$/
if (reg.test(str)) {
if ((/^[a-z]{6,20}$/).test(str)||(/^[A-Z]{6,20}$/).test(str)||(/^[0-9]{6,20}$/).test(str)||(/^-{6,20}$/).test(str)) {
return '请重新输入密码' // {6,20}不能少
} else {
return '输入的密码正确'
}
}
return '请重新输入密码'
}
var str = isValidPassword('ahc_jdjdj')
console.log(str)
7、写一个正则表达式,得到如下字符串里所有的颜色
var re =/#[0-9a-fA-F]{6}(?=;)/g
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) )
8、下面代码输出什么? 为什么? 改写代码,让其输出['hunger', 'world']
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat); //输出[""hunger" , hello "world""]
//因为默认情况下匹配是在贪婪模式下面,这里就是尽可能多的匹配""的字符。只要改为非贪婪模式就可以达到效果,方法是在量词后面加上?
//var pat = /".*?"/g