正则表达式

\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('[email protected]')) //true
console.log(isEmail('[email protected]')) //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"]

你可能感兴趣的:(正则表达式)