正则表达式

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('[email protected]')
  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

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