正则表达式
2017-09-05 本文已影响0人
1w1ng
\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分别是什么?
- \d:数字字符
- \w:单词字符,字母、数字下划线
- \s:空白符
- [a-zA-Z0-9]:匹配任意字母和数字
- \b:单词边界
- .:除了回车符和换行符之外的所有字符
- *:出现零次或多次
- +:出现一次或多次(至少出现一次)
- ?:出现零次或一次(最多出现一次)
- x{3}:重复三次x
- ^: 以xxx开头
- $:以xxx结尾
写一个函数trim(str),去除字符串两边的空白字符
function trim(str){
newstr = str.replace(/^\s+|\s+$/g,'');
return newstr
}
var a = ' hello world '
console.log(trim(a))
写一个函数isEmail(str),判断用户输入的是不是邮箱
function isEmail(str){
newstr = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$/g
return newstr.test(str)
}
console.log(isEmail('ab1cd')) //false
console.log(isEmail('he2llo@qqcom')) //false
console.log(isEmail('wor3ld@123.cn')) //true
console.log(isEmail('12324sdd-_@asd.ccc')) //true
写一个函数isPhoneNum(str),判断用户输入的是不是手机号
function isPhoneNum(str){
newstr = /^1\d{10}$/g
return newstr.test(str)
}
console.log(isPhoneNum('110')) //false
console.log(isPhoneNum('123555566666')) //false
console.log(isPhoneNum('15488889999')) //true
写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
function isValidUsername(str){
newstr = /^[0-9a-zA-Z|_]{6,20}$/g
return newstr.test(str)
}
console.log(isValidUsername('12345')) //false
console.log(isValidUsername('helloworld_')) //true
console.log(isValidUsername('!helloworld')) //false
console.log(isValidUsername('helloWorld')) //true
什么是贪婪模式和非贪婪模式
- 贪婪模式下,正则表达式会尽可能多的重复匹配字符
'123456789'.match(/\d{2,3}/g); //(3) ["123", "456", "789"]
'123456789'.match(/\d{3,4}/g); //(3) ["1234", "5678"]
- 非贪婪模式,让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试,在量词后加上?即可
'123456789'.match(/\d{2,3}?/g); //(4) ["12", "34", "56", "78"]
'123456789'.match(/\d{3,4}?/g); //(3) ["123", "456", "789"]