正则表达式

找出字符串中符合规则的字符

由普通字符(26个英文字母 和数字等)

和特殊字符 . / 等组成


创建正则表达式的正确方法?

 1.new RegExp('lg exp ');
2./正则表达式/


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>创建正则表达式的两种方式</title>
</head>
<body>
   
<script>
   // 字面量或直接量
   // []
   // {}
   // /js/
   // // 构造函数
   // new Array()
   // new Object()
   // // regular expression 正则表达式英文
   // new RegExp()

   // var str = 'I love js';
   // var pattern = /js/;  匹配到的一定是字符串内容
   // '3.4'
   // /js5_正则 ,;!@./

   // var str = 'I love js';
   // var pattern = /js/;
   // // test exec 找到匹配的字符
   // console.log(pattern.test(str));//返回布尔值
   // console.log(pattern.exec(str));//将找到的字符放到数组中返回

   // var str = 'I love Js';
   // var pattern = /js/;
   // // test exec
   // console.log(pattern.test(str));
   // console.log(pattern.exec(str));//null

   // var str = 'I love Js';
   // var pattern = /Js/;
   // console.log(pattern.test(str));
   // console.log(pattern.exec(str)); 返回匹配到的字符串的数组   找不到返回null

    //i ignoreCase 忽略大小写
    //g global 全局匹配
    // m multiline 多行匹配


    // var str = 'I love Js';
   // var pattern = /js/i;
   // console.log(pattern.test(str));
   // console.log(pattern.exec(str));


//与位置无关 这几个随便排
   // /js/ig
   // /js/gi
   // /js/igm
   // /js/img

   // var str = 'I love js';
   // var pattern = new RegExp('js');
   // console.log(pattern.test(str));
   // console.log(pattern.exec(str));

   // var str = 'I love Js';
   // var pattern = new RegExp('js', 'i');
   // console.log(pattern.test(str));
   // console.log(pattern.exec(str));

   // /js/i
   // new RegExp('js', 'i')

   // var str = 'I love Js';
   // var userInput = 'love';
   // var pattern = /userInput/i;   不可取的方法
//错误的方法
   // var str = 'I love Js';
   // var userInput = 'love';
   // var pattern = '/' + userInput + '/i';
   // console.log(typeof pattern);

   var str = 'I love Js';
   var userInput = 'love';
   var pattern = new RegExp(userInput, 'i');//体现了构造方法的优势  userInput随时可以改变
   console.log(pattern);
   console.log(typeof pattern);
   console.log(pattern.exec(str));
</script>

</body>
</html>

正则表达式工具

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>正则表达式测试工具</title>
<style>
   #regexp {
      width: 650px;
      margin: 100px auto;
      font-size: 14px;
   }
   #regexp .title {
      color: #777;
      font-size: 24px;
      text-align: center;
   }
   #regexp .textbox {
      width: 638px;
      height: 150px;
      border: 1px solid #ccc;
      border-radius: 5px;
      padding: 5px;
      resize: none;
   }
   #regexp .textfield {
      width: 215px;
      padding: 5px;
      border: 1px solid #ccc;
   }
</style>
</head>
<body>

   <div id="regexp">
      <h1 class="title">正则表达式测试工具</h1>
      <textarea id="userText" class="textbox" placeholder="在此输入待匹配的文本"></textarea>
      <p>
         正则表达式:<input type="text" id="userRegExp" class="textfield" placeholder="在此输入正则表达式" />
         <input type="checkbox" name="userModifier" value="i" />忽略大小写
         <input type="checkbox" name="userModifier" value="g" />全局匹配
         <input type="checkbox" name="userModifier" value="m" />多行匹配
         <input type="button" id="matchingBtn" value="测试匹配" />
      </p>
      匹配结果:
      <textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>
   </div>

<script>
   var userText = document.getElementById('userText'),
      userRegExp = document.getElementById('userRegExp'),
      userModifier = document.getElementsByName('userModifier'),
      matchingBtn = document.getElementById('matchingBtn'),
      matchingResult = document.getElementById('matchingResult');
   var pattern,
      modifier = '';

   for (var i = 0; i < userModifier.length; i++) {//给每个复选框添加上点击事件
      userModifier[i].onclick = function () {
         modifier = '';//每次被点击要被清空 复选框
         for (var j = 0; j < userModifier.length; j++) {//任意一个被勾选的时候要检测哪几个被选上
            if (userModifier[j].checked) {
               modifier += userModifier[j].value;
            }
         }
      }
   }

   matchingBtn.onclick = function () {
      if (!userText.value) {
         alert('请输入待匹配的文本!');
         userText.focus();//光标定位
         return;
      }
      if (!userRegExp.value) {
         alert('请输入正则表达式!');
         userRegExp.focus();
         return;
      }
      pattern = new RegExp(userRegExp.value, modifier);
      matchingResult.value = pattern.exec(userText.value) || '(没有匹配)';
   }
</script>
</body>
</html>



简单的转义字符


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>简单的转义字符</title>
</head>
<body>
<script>
   // \
   // var str = '// 我是注释';
   // var pattern = /\/\//;      //     匹配// 需要用\转义
   // console.log(pattern.exec(str));

   // var str = '\\\\';       //  '\'默认视为把右边引号转义了  所以要用\\   字符串和正则表达式关系亲密
   // var pattern = /\\\\/;
   // console.log(str);
   // console.log(pattern.exec(str));

   // var str = 'nba';
   // var pattern = /\n/;  //换行
//console.log(pattern.exec(str)
   // var str = '1.html\n2.css\n3.js';
   // var pattern = /\n/;
   // console.log(str);
   // console.log(pattern.exec(str));

   // var str = ' js';
   // var pattern = /\t/;//tab
   // console.log(pattern.exec(str));

   // var str = 'a\nb';
   // var pattern = /\x61\x0A\x62/;//ascll 用16进制表示的  不常用
   // console.log(pattern.exec(str));

   // var str = ' js';
   // var pattern = /\u0009/;//unicode编码 表示的tab 常用 匹配汉字会用到
   // console.log(pattern.exec(str));

   var str = 'Alex帅';
   var pattern = /衰/;
   //中文的unicode 范围  \u4e00-\u9fa5
</script>
</body>
</html>


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>字符类</title>
</head>
<body>
   

<script>
   // var str = 'sjavascript';
   // var pattern = /[js]/; //匹配[]中任意一个字符 先匹配到谁就是谁

   // var str = 'javascript';
   // var pattern = /[^js]/; //除了js以外的任何字符
   // console.log(pattern.exec(str));//a

   // var str = 'javascript';
   // var pattern = /[a-z]/;  //26个字母
   // console.log(pattern.exec(str));

   // var str = 'javascript';
   // var pattern = /[c-d]/;
   // console.log(pattern.exec(str));

   // var str = 'javascript';
   // var pattern = /[c-c]/;
   // console.log(pattern.exec(str));

   // var str = 'Alex帅';
   // var pattern = /[\u4e00-\u9fa5]/;
   // console.log(pattern.exec(str));

   // var str = 'JavaScript';
   // var pattern = /[a-zA-Z]/;
   // console.log(pattern.exec(str));

   // var str = '00544';
   // var pattern = /[0-9]/;
   // console.log(pattern.exec(str));


   // var str = 'JavaScript2.0';
   // var pattern = /[a-zA-Z0-9]/;
   // console.log(pattern.exec(str));

   // /[a-zA-Z0-9@_asdf]/
   // /[^\n]/ 除了\n之外的字符被匹配
   // /./   等同于除了\n以外的字符

   // var str = '3.1415926';
   // var pattern = /./;
   // console.log(pattern.exec(str));

   // var str = '3.1415926';
   // var pattern = /\./;
   // console.log(pattern.exec(str));

   // var str = '\n';
   // var pattern = /./;
   // console.log(pattern.exec(str));

   // /[a-zA-Z0-9_]/ /\w/      后者是简写
   // /[^a-zA-Z0-9_]/ /\W/

   // var str = '_@';
   // var pattern = /\w/;
   // console.log(pattern.exec(str));

   // var str = '00544';
   // var pattern = /\d/;   相当于[0-9]
   // console.log(pattern.exec(str));

   // var str = ' ';
   // var pattern = /\s/;   代表空格和tab
   // console.log(pattern.exec(str));
   // \S

   var str = '1 1';
   var pattern = /[\s\d]/; //[]表示不管里面有多少 只匹配一个
</script>
</body>
</html>

重复和贪婪

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>重复</title>
</head>
<body>
   

<script>
   // var str = '110';
   // var pattern = /\d{2}/;   //匹配0-9 可以匹配两个
   // console.log(pattern.exec(str));

   // var str = '110';
   // var pattern = /\d{1,2}/; //匹配一个或者两个
   // console.log(pattern.exec(str));
   // // for (var i = 0; i < 3; i++) {

   // // }
   // var pattern = /\d{1, 2}/;//不能乱写空格

   // var str = '110';
   // var pattern = /\d{1,}/; //匹配至少一个
   // console.log(pattern.exec(str));

   // var str = '110';
   // var pattern = /\d{,2}/; //XX 不能这么写
   // console.log(pattern.exec(str));

   // var str = '110';
   // var pattern = /\d?/; // {0,1}
   // console.log(pattern.exec(str));

   // var str = '110';
   // var pattern = /\d+/; // {1,}
   // console.log(pattern.exec(str));

   // var str = '110';
   // var pattern = /\d*/; // {0,}
   // console.log(pattern.exec(str));

   // var str = '肯德基豪华午餐:¥15.5!';
   // // var pattern = /\d+\.?\d*/;  //匹配数字 不确定整数位是否是一个以上所以是 \d+  匹配.因为.可能因为价格是整数没有. 用|.?  最后一个是匹配小数位
   // var pattern = /\d{1,}\.{0,1}\d{0,}/;
   // console.log(pattern.exec(str));

   // var str = 'aaab';
   // var pattern = /a+/; //匹配aaa  条件允许就匹配尽量多
   // console.log(pattern.exec(str));

   // var str = 'aaab';
   // var pattern = /a+?/; //a
   // console.log(pattern.exec(str));

   // var str = 'aaab';
   // var pattern = /a+b/;//aaab
   // console.log(pattern.exec(str));

   // var str = 'aaab';
   // var pattern = /a+?b/;//aaab 第一个就匹配上了a  而不是第三个a
   // console.log(pattern.exec(str));

   // var str = '<td><p>a</p></td><td><p>b</p></td>';
   // var pattern = /<td>.*<\/td>/;//.*最少0最多无限
    // console.log(pattern.exec(str)); //全部被匹配

   var str = '<td><p>a</p></td><td><p>b</p></td>';
   var pattern = /<td>.*?<\/td>/;
   console.log(pattern.exec(str));  //只匹配第一个td中间的内容    转换为非贪婪模式只用加个?
</script>
</body>
</html>



分组 、引用、捕获

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>选择、分组和引用</title>
</head>
<body>
   
<script>
    //选择
   // var str = 'css html js';
   // var pattern = /html|css|js/; // | 表示或者
   // console.log(pattern.exec(str));

   // var str = 'ab';
   // var pattern = /a|ab/;//a
   // console.log(pattern.exec(str));

    //分组
   // var str = 'abab';
   // var pattern = /(ab)+/;
   // console.log(pattern.exec(str));//abab ab

   // var str = 'abcd';
   // var pattern = /(ab)c/; //捕获
   // console.log(pattern.exec(str));//abc ab

   // var str = 'abcd';
   // var pattern = /(?:ab)c/;//非捕获 abc 
   // console.log(pattern.exec(str));

   // var str = 'abcd';
   // var pattern = /(ab)(c)/; //abc ab c
   // console.log(pattern.exec(str));

   // var str = 'abcd';
   // var pattern = /(a(b(c)))/; //abc abc bc c
   // console.log(pattern.exec(str));
//引用
   // var str = 'ab cd ab';
   // var pattern = /(ab) cd \1/;   // \1代表第一个分组 也就是 (ab)    abcd ab
   // console.log(pattern.exec(str));
// <> 这个括号不用转义
   var str = '<p><a>这是一段文字</a></p>';
   var pattern = /<([a-zA-Z]+)>(.*?)<\/\1>/;
   console.log(pattern.exec(str));

   'abc' /c/ index
</script>
</body>
</html>


问:现有类似’javascript is js’的字符串,其中javascript中的j和s的大小写与后面js中j和s的大小写保持一致,即’Javascript is Js’或’JavaScript is JS’等,请用引用的方式写出能够匹配它的正则表达式,下列选项中哪个是用分组和引用的方式来匹配的?

/([Jj])ava([Ss])cript\sis\s(\1\2)/




边界匹配


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>指定匹配位置</title>
</head>
<body>
   
<!-- <p class="odd2      odd    ">1</p>
<p class="even">2</p>
<p class="odd">3</p>
<p class="even">4</p> -->

<script>
    //首尾匹配
   // var str = 'html js';
   // var pattern = /^js/; //表示j必须在字符串开头
   // console.log(pattern.exec(str));
   //与 /[^0-9]不同 /

   // var str = 'html js css';
   // var pattern = /js$/; //尾匹配
   // console.log(pattern.exec(str));

   // var str = '110119120';
   // var pattern = /^\d+$/;
   // console.log(pattern.exec(str));
   // if (pattern.test(str)) {
   //     console.log('全是数字!');
   // } else {
   //     console.log('不全是数字!');
   // }

   // var str = '11011a9120';
   // var pattern = /\D/;//非数字
   // console.log(pattern.exec(str));
   // if (pattern.test(str)) {
   //     console.log('不全是数字!');
   // } else {
   //     console.log('全是数字!');
   // }


    //边界匹配
   // var str = 'js html';
   // var pattern = /js\b/;   //   匹配到js   js后的空格是一个边界
   // console.log(pattern.exec(str));

   // var str = '@@@js@@@';
   // var pattern = /\bjs\b/;
   // console.log(pattern.exec(str));

   // var oddP = getByClassName('odd');
   // var evenP = getByClassName('even');
   // for (var i = 0; i < oddP.length; i++) {
   //     oddP[i].style.backgroundColor = 'red';
   // }
   // for (var i = 0; i < evenP.length; i++) {
   //     evenP[i].style.backgroundColor = 'yellow';
   // }

   // function getByClassName(className, parentNode) {
   //     if (document.getElementsByClassName) {
   //        return document.getElementsByClassName(className);
   //     } else {console.log(1);
   //        parentNode = parentNode || document;
   //        var nodeList = [];
   //        var allNodes = parentNode.getElementsByTagName('*');
   //        var pattern = new RegExp('\\b' + className + '\\b');//方法二 只要保证这个单词前后都有

   //        for (var i = 0; i < allNodes.length; i++) {
   //           if (pattern.test(allNodes[i].className)) {
   //              nodeList.push(allNodes[i]);
   //           }
   //        }

   //        return nodeList;
   //     }
   // }

   // function getByClassName(className, parentNode) {
   //     if (document.getElementsByClassName) {
   //        return document.getElementsByClassName(className);
   //     } else {console.log(1);
   //        parentNode = parentNode || document;
   //        var nodeList = [];
   //        var allNodes = parentNode.getElementsByTagName('*');
   //        var pattern = new RegExp('(^|\\s+)' + className + '($|\\s+)');//方法一

   //        for (var i = 0; i < allNodes.length; i++) {
   //           if (pattern.test(allNodes[i].className)) {
   //              nodeList.push(allNodes[i]);
   //           }
   //        }

   //        return nodeList;
   //     }
   // }

   // function getByClassName(className, parentNode) {
   //     if (document.getElementsByClassName) {
   //        return document.getElementsByClassName(className);
   //     } else {console.log(1);
   //        parentNode = parentNode || document;
   //        var nodeList = [];
   //        var allNodes = parentNode.getElementsByTagName('*');

   //        for (var i = 0; i < allNodes.length; i++) {
   //           if (allNodes[i].className === className) {
   //              nodeList.push(allNodes[i]);
   //           }
   //        }

   //        return nodeList;
   //     }
   // }

    //前瞻性匹配
   // var str = 'java';
   // var pattern = /java(?=script)/;  //如果后面是script就匹配java
   // console.log(pattern.exec(str));

   var str = 'javasda';
   var pattern = /java(?!script)/;//如果后面不是script就匹配java
   console.log(pattern.exec(str));
</script>
</body>
</html>


RegExp实例方法

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>RegExp对象</title>
</head>
<body>

<script>
   // /js/
   // new RegExp('js')
   // var className = 'box';
   // new RegExp(className)

   // console.log(new RegExp('\\b'));  //注意转义字符要双重转义
   // /\\/
   // new RegExp('\\\\')  //等同于 /\\/  要双倍

   // RegExp实例方法
   // var pattern = /js/;
   // var pattern = new RegExp('js');

   // pattern.test pattern.exec

   // var str = 'js js js';
   // var pattern = /js/;
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));

   // var str = 'js js js';
   // var pattern = /js/g;
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));

   // pattern.lastIndex  //匹配上的字符下一个位置

   // var str = 'js js js';
   // var pattern = /(j)s/;
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));

   // var str = 'js js js';
   // var pattern = /(j)s/g;
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));
   // console.log(pattern.exec(str));

   // var str = '1.js 2.js 3.js';
   // var pattern = /js/g;
   // var total = 0,
   //     match = '',
   //     result;
//每次执行exec只返回找到的一个  所以需要循环
   // while ((result = pattern.exec(str)) != null) {
   //     total++;
   //     match += '第' + total + '个匹配到的是:' + result[0] + ', 它的位置是:' + result.index + '\n';
   // }
   // match += '共找到' + total + '处匹配\n';
   // console.log(str);
   // console.log(match);

   // var str = 'js js js';
   // var pattern = /js/g;
   // console.log(pattern.test(str));
   // console.log(pattern.test(str));
   // console.log(pattern.test(str));
   // console.log(pattern.test(str));
   // console.log(pattern.test(str));

   // var pattern = new RegExp('a\\nb')
   // console.log(pattern.toString());
   // console.log(pattern.toLocaleString());//和上面的tostring类似  用不上
   // console.log(pattern.valueOf() === pattern);//返回正则表达式本身

   // RegExp实例属性

   // var str = 'js js js';
   // var pattern = new RegExp('\\b', 'i');
   // console.log(pattern.ignoreCase);//判断一下前面有没有i
   // console.log(pattern.global);
   // console.log(pattern.multiline); //这三个返回布尔值
   // console.log(pattern.source);//和tostring类似  这一组用处都不大
   // console.log(pattern.lastIndex);

   // var str = 'js js js';
   // var pattern = /js/;
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);

   // var str = 'js js js';
   // var pattern = /js/g;
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);//匹配不到了就重新开始
   // pattern.test(str);
   // console.log(pattern.lastIndex);
   // pattern.test(str);
   // console.log(pattern.lastIndex);

   // 构造函数属性  不常用
   // var str = 'js js js';
   // var pattern = /(j)s/;
   // pattern.exec(str);
   // console.log(RegExp.input);
   // console.log(RegExp.$_); // 字母、_、$开头,后面字母、_、$、数字
   // console.log(RegExp['$_']);
   // console.log(RegExp.lastMatch);
   // console.log(RegExp['$&']);
   // console.log(RegExp.leftContext);
   // console.log(RegExp['$`']);
   // console.log(RegExp.rightContext);
   // console.log(RegExp["$'"]);
   // console.log(RegExp.lastParen);
   // console.log(RegExp["$+"]);

   // exec
   // /\1\2/
   // console.log(RegExp.$1);

   
</script>
</body>
</html>



string中操作正则表达式的方法

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>String对象中与正则表达式相关的方法</title>
</head>
<body>

<script>
   // var str = 'html js js';
   // var pattern = /js/g;
   // console.log(str.search(pattern));//没找到返回-1 返回找到的位置 不用加g也可以

   // var str = 'html js js';
   // console.log(str.search('js'));//会自己转为正则表达式

   // var str = 'js js js';
   // var pattern = /(j)s/;
   // console.log(str.match(pattern)); js j

   // var str = 'js js js';
   // var pattern = /(j)s/g;
   // console.log(str.match(pattern)); js js js

   // match VS exec
//match 在非全局匹配的情况下才会返回分组中匹配的内容   全局匹配只能匹配到所有匹配到的字符

   // var str = '1.js\n2.js\n3.js';
   // var pattern = /js/m;
   // console.log(str);
   // console.log(str.match(pattern));
//m要配合g
   // var str = '1.js\n2.js\n3.js';
   // var pattern = /js/mg;
   // console.log(str);
   // console.log(str.match(pattern));

   // var str = '1.js\n2.js\n3.js';
   // var pattern = /js$/mg;//不加m只匹配到最后一个js
   // console.log(str);
   // console.log(str.match(pattern));

   // var str = 'js1\njs2\njs3';
   // var pattern = /^js/mg;
   // console.log(str);
   // console.log(str.match(pattern));

   // var str = 'html,css,js';
   // console.log(str.split(','));

   // var str = 'html,css,js';
   // var pattern = /,/g;
   // console.log(str.split(pattern));

   // var str = 'html ,   css  ,   js';
   // var pattern = /\s*,\s*/;
   // console.log(str.split(pattern));

   // var str = 'I love js js';
   // console.log(str.replace('js', 'html'));

   // var str = 'I love js js';
   // var pattern = /js/g;
   // console.log(str.replace(pattern, 'html'));

   // var str = '1111-11-11';
   // var pattern = /-/g;
   // console.log(str.replace(pattern, '.'));

   // var str = 'I love js';
   // var pattern = /(js)/;
   // document.write(str.replace(pattern, '<strong style="color: red;">$1</strong>'));//$1表示第一个分组

   // var str = '中国军队和阿扁一起办证';
   // var pattern = /国军|阿扁|办证/g;
   // console.log(str.replace(pattern, '*'));

   // var str = '中国军队和阿扁一起办证';
   // var pattern = /国军|阿扁|办证/g;
   // console.log(str.replace(pattern, function ($0) {//随便用一个字符串接受 这里用的$0
   //     // console.log($0);
   //     var result = '';
   //     for (var i = 0; i < $0.length; i++) {
   //        result += '*';
   //     }

   //     return result;
   // }));
</script>
</body>
</html>

常用的正则表达式

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>常用的正则表达式</title>
</head>
<body>

<script>
   // 1.QQ
   //     全是数字
   //     首位不能为0
   //     最少5位(10000)
   //     目前最多11位?

   // /^[1-9]\d{4,10}$/   这里不是为了匹配qq号  而是验证qq号是否符合规则
   // /^[1-9]\d{4,}$/    不设置最多位数

   // 2.昵称
   //     中、英文、数字以及下划线
   //     2-18位
   // /^[\u4e00-\u9fa5a-zA-Z0-9_]{2,18}$/
   // /^[\u4e00-\u9fa5\w]{2,18}$/

   // 3.密码
   //     6-16位
   //     不能用空白字符\s
   // /^\S{6,16}$/
   // /^[\w~!@#$%^\[\]]{6,16}$/    这里是把所有允许输入的字符都包括进来

   // 4.去除字符串首尾的空白字符
   // var str = '        Alex         ';
   // var pattern = /^\s+/;
   // console.log('|' + str.replace(pattern, '') + '|');

   // var str = '        Alex         ';
   // var pattern = /\s+$/;
   // console.log('|' + str.replace(pattern, '') + '|');

   // var str = '        Alex         ';
   // var pattern = /^\s+|\s+$/g;   方法一
   // console.log('|' + str.replace(pattern, '') + '|');

   // var str = '        Alex         ';
   // var pattern1 = /^\s+/;
   // var pattern2 = /\s+$/;  方法二  性能不好
   // console.log('|' + str.replace(pattern1, '').replace(pattern2, '') + '|');

//     function trim(str) {      封装一个方法
//        return str.replace(/^\s+/, '').replace(/\s+$/, '');
//     }
//     trimLeft trimRight  可以细分一下功能
//     var str = '        Alex         ';
// console.log('|' + trim(str) + '|');

   // 5.转驼峰-
   //     css: background-color: red;
   //     js: elem.style.backgroundColor = 'red';
   //     jquery: $(elem).css('background-color', 'red');

   // var str = 'background-color';
   // var pattern = /-([a-z])/gi;
   // console.log(str.replace(pattern, function (all, letter) {
   //     return letter.toUpperCase();
   // }));

   // function toCamelCase(str) {
   //     return str.replace(pattern, function (all, letter) {
   //        return letter.toUpperCase();
   //     })
   // }
   // all,letter都是参数。all用来传递正则匹配到的所有字符。letter用来传递正则中小括号内匹配到的字符。

   // 6.匹配HTML标签
   // var str = '<p class="odd" id="odd">123</p>';
   // var pattern = /<\/?[a-zA-Z]+(\s+[a-zA-Z]+=".*")*>/g;
   // console.log(str.match(pattern));

   // var str = '<p class="odd" id="odd">123</p>';
   // var pattern = /<[^>]+>/g;
   // console.log(str.match(pattern));
//下面的特例不能用上面的方法
   // var str = '<input type="text" value=">" name="username" />';
   // var pattern = /<(?:[^"'>]|"[^"]*"|'[^']*')*>/g;//看成两部分 引号外和引号内用 或 连接
   // console.log(str.match(pattern));

   // var str = '<input type="text" value=">" name="username" />';
   // var pattern = /<(?:[^"'>]|(["'])[^"']*\1)*>/g; //看成<p> <\1>
   // console.log(str.match(pattern));

   // 7.邮箱
   //     alex@yahoo.com.cn
   //     alex_1@yahoo.com.cn
   //     alex_1.a-sdasd.asdasdas.com@yah-o_o.com.adasdsd.cn
   // /(?:\w+\.)*\w+@(?:\w+\.)+[a-z]/i
   // /^[a-z0-9]+(?:[._-][a-z0-9]+)*@[a-z0-9]+(?:[._-][a-z0-9]+)*\.[a-z]{2,4}$/i

   // 8.URL
   // (协议:\/\/)主机名(:端口号)(/路径)  //协议可有可无  主机名是在端口号: 和路径/之前
// ftp|http|https|mailto|file:///
   // /^(https?:\/\/)?([^:\/]+)(:\d+)?(\/.*)?$/               这里是只考虑了http或者https的协议

   // 匹配主机名
   // /[^:\/]+/
   // -www.-imos-oc.casfasf.sadasd.co-m  //不能以-开头结尾
   // ai
   // /[a-z0-9]|[a-z0-9][-a-z0-9]*[a-z0-9]/i
   // /^([a-z0-9]\.|[a-z0-9][-a-z0-9]*[a-z0-9]\.)*(com|edu|gov|net|org|[a-z]{2})$/i
   // /^([a-z0-9]\.|[a-z0-9][-a-z0-9]*[a-z0-9]\.)*([a-z]+)$/i

   // var regexp = {
   //     'chinese': /[\u4e00-\u9fa5]/, // 
   //     'qq': /^[1-9]\d{4,}$/,
   //     ....
   // };
   // regexp.qq
</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值