正则表达式

157 阅读3分钟

1、字符串匹配

方法一:    // var str = 'I love Js';    // var pattern = /js/i;    // console.log(pattern.test(str));   //test测试匹配是否成功    // console.log(pattern.exec(str));   //找到的字符串以数组形式展示给我们            //模式修饰符        //i ignoreCase  忽略大小写        //g global  全局匹配        //m multiline  多行匹配
方法二:    var str = "I love js";    var pattern = new RegExp("js");    console.log(pattern.test(str));    console.log(pattern.exec(str));

2、创建正则表达式

一般情况下,使用字面量方式;/js/i --此方法写好之后不能改变

构造方式有点笨重和复杂;new RegExp('js','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');    console.log(pattern);    console.log(typeof pattern);    console.log(pattern.exec(str));

3、正则表达式匹配小工具

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title>    <style>        #regexp{            width:650px;            margin:100px auto;            font-size:14px;        }        #regexp .title{            font-size:24px;            color:#777;            text-align:center;        }        #regexp .textbox{            width:650px;            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="测试匹配"/>            匹配结果:            <textarea id="matchingResult" class="textbox" disabled="disabled"></textarea>        </p>    </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>

4、转义字符

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>简单的转义字符</title></head><body>    <script>        // 普通字符  /js/        //转义字符  \    // 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/;    // 匹配换行符    // var str = '1.html\n2.css\n3.js';    // var pattern = /\n/;    // console.log(str)    // console.log(pattern.exec(str));    // 匹配制表符TAB键        // var str = '      js';        // var pattern = /\t/;        // console.log(pattern.exec(str));           // 反斜杠n        // var str = 'a\nb';        // var pattern = /\x61\xOA\x62/;        // console.log(pattern.exec(str));        // unicode编码        var str = ' js';        var pattern = /\u0009/;        console.log(pattern.exec(str));        var str = 'Alex帅';        var pattern = /刷/;        console.log(pattern.exec(str));    </script></body></html>

5、字符类

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title></head><body>    <script>        // var str = 'javascript';        // var pattern = /[js]/;    //[]匹配任意一个字符        // console.log(pattern.exec(str));        // var str = 'javascript';        // var pattern = /[a-z]/; //[]匹配任意一个字符        // console.log(pattern.exec(str));        // var str = 'javascript';        // var pattern = /[c-d]/; //[]匹配任意一个字符        // console.log(pattern.exec(str));        // 汉字匹配        //  var str = 'Alex帅';        //  var pattern = /[\u4e00-\u9fa5]/;        //  console.log(pattern.exec(str));        // 数字匹配        // var str = '00544';        // var pattern = /[a-zA-Z0-9]/;        // console.log(pattern.exec(str));    </script></body></html>