JS 正则表达式

\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{n},^,$分别是什么?##

字符 含义
\d 数字字符
\D 非数字字符
\s 空白符
\S 非空白符
\w 单词字符(字母、数字下划线 )
\W 非单词字符
[a-zA-Z0-9] 字母、数字
\b 单词边界(开头、结尾、空格分隔、中横行分隔)
. 除了回车符和换行符之外的所有字符
^ 以xxx开头
$ 以xxx结尾
* 匹配零个或多个
+ 匹配一个或多个
? 匹配零个或一个
{n} 匹配n个
{n,m} 匹配n至m个
{n,} 至少匹配个
{,m} 最多匹配m个

贪婪模式和非贪婪模式指什么?##

  • 贪婪模式:在符合正则表达式的前提下,尽可能多的匹配,默认为贪婪模式。
  • 非贪婪模式:在符合正则表达式的前提下,尽可能少的匹配,方法:在量词后加上? ,如{n,m} ?

写一个函数trim(str),去除字符串两边的空白字符##

function trim(str){
        return str.replace(/^\s+|\s+$/g,'')
      }

使用正则实现 addClass(el, cls)、hasClass(el, cls)、removeClass(el,cls)##

      function hasClass(el,cls){
        var reg = new RegExp("^|\\s" + cls + "$|\\s");
        return reg.test(el.className)
      }
      function addClass(el,cls){
        if (!hasClass(el,cls)) {
          el.className += " " + cls;
        }
      }
      function removeClass(el, cls) {
        var reg = new RegExp("^|\\s" + cls + "$|\\s","g");
        if (hasClass(el,cls)) {
          el.className.repalce(reg,"")
        }
      }

格式判断##

  • 写一个函数isEmail(str),判断用户输入的是不是邮箱
  • 写一个函数isPhoneNum(str),判断用户输入的是不是手机号
  • 写一个函数isValidUsername(str),判断用户输入的是不是合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
  • 写一个函数isValidPassword(str), 判断用户输入的是不是合法密码(长度6-20个字符,包括大写字母、小写字母、数字、下划线至少两种)
      function isEmail(str) {
        /^[A-Za-z0-9][\w\.\-]+@[A-Za-z0-9][\w\-]+[A-Za-z0-9]\.[A-Za-z]{2,}$/;
      }

        function isPhoneNum(str) {
            var exp = /^1\d{10}$/;
            return exp.test(str);
        }

        function isValidUsername(str) {
            var exp = /^\w{6,20}$/;
            return exp.test(str);
        }

        function isLegalPassword(str){
          if(str.length < 6 || str.length > 20){
              return false;
          }
          //如果包含上述四种以外的字符,false
          if(/\W/.test(str)){
              return false;
          }
          //如果全为大写、小写、下划线、数字, false
          if( /(^[a-z]+$)|(^[A-Z]+$)|(^_+$)|(^\d+$)/g.test(str) ){
              return false;
          }
          return true;
        }

写一个正则表达式,得到如下字符串里所有的颜色(#121212)##

    var reg = /#[0-9a-fA-F]{6}/g;

    var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 "

    alert( subj.match(reg) )  // #121212,#AA00ef

下面代码输出什么? 为什么? 改写代码,让其输出hunger, world##

    var str = 'hello  "hunger" , hello "world"';
    var pat =  /".*"/g;
    str.match(pat);//"hunger" , hello "world"
    // 默认为贪婪模式,需要修改为非贪婪模式,在量词后加?
    var pat =  /".*?"/g;

补全如下正则表达式,输出字符串中的注释内容. (可尝试使用贪婪模式和非贪婪模式两种方法)##

      var str = '..  ..   .. ';
      var re = /<[\s|\S]*?>/g;//非贪婪
      // 或者
      var re = /<[^<]+>/g;//贪婪
      str.match(re) // '', ''

补全如下正则表达式##

    var str = '<>   '
    var re = /<[^>]+?>/g;
    str.match(re) // '', '', ''

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