美文网首页
{正则表达式}

{正则表达式}

作者: jrg_memo | 来源:发表于2016-12-19 17:21 被阅读29次
    • 定义
      RegExp === Regular Expression :
      一种用来描述字符组合特征匹配模式

    • 作用

      • 替换/删除文本
      • 测试字符串内的模式
      • 根据模式匹配从字符串中提取一个子字符串,用来在文本或者输入字段中查找特定的文字
    • 语法
      var re = / 字符 / 标志;

    • 标志 可选
      g全局搜索。
      i不区分大小写搜索。
      m 多行搜索。
      y 执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。

    • 常见字符
      \d 表示数字字符;等价于[0-9]
      \w 单词字符,数字,下划线;等价于[a-zA-Z0-9_]
      \s 空白符;等价于[\t\n\f\x0B\r]
      [a-zA-Z0-9]单词字符、字母、数字
      \b单词边界
      . 除了回车和换行外的所有字符;
      *出现0次或多次
      +至少出现一次
      ?出现0次或1次
      x{3}出现3次x
      ^$表示开始和结尾;
    • 匹配模式
      在整个表达式匹配成功的提前下
      • 贪婪模式 :尽可能多的匹配,即一般趋于最大长度匹配。
      • 非贪婪模式:以最少的匹配字符。
    • 使用方式

      正则:

    • test () 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。
      RegExp.test( str )
      // 返回truefalse

    • **exec() **方法为指定的一段字符串执行搜索匹配操作。
      RegExp.exec( str )
      // 返回一个数组null

    字符串:

    应用

    • 去除字符串两边的空白字符
      function trim(str) {
      var re = /^\s+|\s+$/g;
      str.replace(re,"");
      return str;
      }
    • 实现 addClass(el, cls)hasClass(el, cls)removeClass(el,cls)
      function hasClass(el,cls) {
      var reg=new RegExp('(\s|^)'+cls+'(\s|$)','g');
      return reg.test(el.className);
      }

       function addClass(el,cls){ 
              if(!hasClass(el,cls)){ 
                   el.className=el.className+" "+cls; 
              }
       }
      
       function removeClass(el,cls) { 
              var reg=new RegExp('(\\s|^)'+cls+'(\\s|$)','g'); 
              el.className=(el.className).replace(reg,"");
       }
      
    • 判断邮箱
      function isEmail(str){
      reg=/(^\w+)@(\w+).com$/g;
      return reg.test(str);
      }

    • 判断手机号
      function isPhoneNum(str){
      reg=/^1[3-8]\d{9}$/;
      return reg.test(str);
      }

    • 判断合法的用户名(长度6-20个字符,只能包括字母、数字、下划线)
      function isValidUsername(str){
      reg=/^\w{6,20}$/;
      return reg.test(str)? "合法":"非法";
      }

    • 判断合法密码(长度6-20个字符,只包括大写字母、小写字母、数字、下划线,且至少包括两种)
      function isValidPassword(str) {
      if (/^[a-zA-Z0-9_]{6,20}$/.test(str)) {
      return true
      }else{
      return "长度6-20个字符,包括大写字母、小写字母、数字、下划线至少两种"
      }
      }

    • 匹配颜色
      var re = /#\w{6}/g;
      var subj = "color: #121212; background-color: #AA00ef;
      width: 12px; bad-colors: f#fddee #fd2 "
      alert( subj.match(re) ) // #121212,#AA00ef

    • 修改正则表达式
      原始
      var str = 'hello "hunger" , hello "world"';
      var pat = /".*"/g;--------------------------------->贪婪模式
      str.match(pat); //输出[""hunger" , hello "world""]

      修改
             var str = 'hello "hunger" , hello "world"';
             var pat = /".*?"/g;--------------------------------->非贪婪模式
             console.log(str.match(pat)); //输出["hunger","world"]
      
    • 补全正则表达式
      非贪婪模式
      str = '.. .. .. '
      re = //
      gstr.match(re); // ["", ""]

      贪婪模式
             str = '.. <!-- My -- comment \n test --> .. <!----> .. '
             re = /<!--[^>]*/g; //
             str.match(re); 
      
    • 补全正则表达式
      非贪婪模式
      var re = /<.+?>/gvar
      str = '<> <a href="/"> <input type="radio" checked> <b>'
      str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'
      贪婪模式
      var re = /<[ ^>]+>/gvar
      str = '<> <a href="/"> <input type="radio" checked> <b>'
      str.match(re) // '<a href="/">', '<input type="radio" checked>', '<b>'

    相关文章

      网友评论

          本文标题:{正则表达式}

          本文链接:https://www.haomeiwen.com/subject/ewqamttx.html