正则

作者: 致自己_cb38 | 来源:发表于2018-11-18 17:52 被阅读0次

1. 字符串查询的一些函数

search
charAt
split
substring
slice

2.正则的创建

var re = new RegExp('a','修正'); //js所特有的创建方式
var re = /a/修正;  //定界符 perl语言风格

3.re.test()

判断正则是否能够匹配带内容,如果可以返回true,否则返回false。

4.str.match(re)

返回匹配到的内容

5.re.exec(str)

返回匹配到的内容

6.str.replace(re,要替换的内容);

eg:敏感词过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <input type="text">
    <button>发送</button>
    <div></div>
</body>
<script>
    var div = document.querySelector('div');
    var input = document.querySelector('input');
    var btn = document.querySelector('button');
    btn.onclick = function(){
        var re = /杀人|SB|sb|傻逼|黄网|炸金花/g;
        div.innerText += input.value.replace(re,'***') + '\n';
        input.value = '';
    };
</script>
</html>

eg:过滤HTML标签(替换小说)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea name="" id="t1" cols="30" rows="10"></textarea>
    <input type="button" value="转换">
    <textarea name="" id="t2" cols="30" rows="10"></textarea>
    <script>
        var tx = document.getElementsByTagName('textarea');
        var inp = document.getElementsByTagName('input')[0];
        inp.onclick = function(){
            var re = /<[^<>]+>/g;
            console.log(tx[0].value.replace(re,''));
            tx[1].value = tx[0].value.replace(re,'');
        };
    </script>
</body>
</html>

eg:邮箱验证

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>

</body>
<script>
    var str = 'pdvpp12@vp.com.nvdnd';
    //获取所有[0-9a-zA-Z_]的内容+@+所有[0-9a-z]的内容+所有.[0-9a-z]的内容(任意次数),不区分大小写
    var re = /\w+@[0-9a-z]+(\.[0-9a-z]+)+/i;
    console.log(str.match(re));
</script>
</html>

7.str.search(re)

查询返回的是字符串的位置

8.元字符 一个 []

  • 具体字符选择
    [abc]dc=adc| bdc | cdc
  • 范围
    [a-z] a......z
    [0-9] 0123456789
    [A-Z] A.......Z
  • 取反
    [^0-9]
    [^a-z]
    [^abc]

9.原子

  • . 任何
  • \d === [0-9] 数字
  • \D === [^0-9] 为数字
  • \w ===[0-9a-zA-Z_] 字母数字下滑线
  • \W ===[^0-9a-zA-Z_] 不是字母数字下滑线
  • \s === 空白字符
  • \S === 非空白字符

10.量词:出现的次数

  • {m} 出现m次
  • {n,m}出现n-m次
  • {n,} 至少出现n次
  • +=== {1,} 至少出现1次
  • ? === {0,1} 有或者没有
  • *=== {0,} 出现多少次都行 容易出现问题

11. 信息采集 爬虫

贪婪:尽可能的匹配最长的结果。

12.边界符

  • ^ 以什么开始
  • $ 以什么结束
    eg:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script>
    var str = 'dkhsahdklsaunadbsnjfkhbudsgfnbvelwjgSBDH';
    var re = /^d.*H$/g;
    console.log(str.match(re));
</script>
</body>
</html>

案例

  • 查找数字
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<script>
    var str = 'asd302nbdsjknjk219iknsjknca219343knsjk739bjk_rh32.sfh222';
    // console.log(parseInt(str[0]))//nan
    var temp = '';
    var arr = [];
    //遍历
    for(var i =0;i<str.length;i++){
        //是否为数字
        if(!isNaN(parseInt(str[i]))){
            temp = temp + str[i];
        }else{
            if(temp){
                arr.push(temp);
                temp = '';
            }
        }
    }
    if(temp){
        arr.push(temp);
        temp = '';
    }
    console.log(arr); 
    /*Array(6)
    0: "302"
    1: "219"
    2: "219343"
    3: "739"
    4: "32"
    5: "222"
    */
</script>
</body>
</html>
  • 百度注册
2<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        form{
            width: 600px;
            height: 500px;
            margin: 100px auto;
        }
        .show{
            display: none;
        }
    </style>
</head>
<body>
    <form action="1.php" method="post">
        用户名 <input type="text" placeholder="请设置用户名">
        <span class="show">设置后不可更改,不可使用中文,最长14个字符</span><br><br>
        手机号 <input type="text" placeholder="可用于登陆和找回密码">
        <span class="show">请输入中国大陆手机号,其他用户不可见</span><br><br>
        密码 <input type="password" placeholder="设置登陆密码">
        <span class="show">长度为6-14个字符,支持数字、大小写字母</span><br><br>
        验证码 <input type="text" placeholder="请输入验证码">
        <input type="button" value="获取短信验证码"><br><br>
        <input type="checkbox">
        <span>阅读并接受</span>
        <a href="###">《百度用户协议》</a>
        <span>及</span>
        <a href="###">《百度隐私权保护声明》</a><br><br>
        <input type="submit" placeholder="注册">
    </form>
</body>
<script>
    var is_submit = true;
    var form = document.getElementsByTagName('form')[0];
    var input = document.getElementsByTagName('input');
    var btn = document.getElementsByTagName('button')[0];
    var show = document.getElementsByTagName('span');
    if (is_submit) {
        form.onsubmit = function(){
            var is_commit = true;
            //判断用户名是否与所给范围匹配
            var re = /^[0-9a-zA-Z]{6,14}$/;
            if (!re.test(input[0].value)) {
                is_commit = false;
                alert('用户名错误');
            }
            //判断手机格式是否与所给范围匹配
            var re = /^1[3456789]\d{9}$/;
            if (!re.test(input[1].value)) {
                is_commit = false;
                alert('手机格式错误');
            }
            //判断登陆密码是否与所给范围匹配
            var re = /^[0-9a-zA-Z]{6,14}$/;
            if (!re.test(input[2].value)) {
                is_commit = false;
                alert('登陆密码错误');
            }
            //判断验证码是否与所给范围匹配
            var re = /\d{4}/;
            if (!re.test(input[3].value)) {
                is_commit = false;
                alert('验证码错误');
            }
            //判断是否提交
            if (!is_commit) {
                return false;
            }
            alert('可以提交');
        };
        input[4].onclick = function(){
            if (input[4].value > 0) {
                return false;
            }
            var time = 30;
            input[4].value = time;
            //倒计时
            var timer = setInterval(function(){
                time--;
                if (input[4].value <= 0) {
                    input[4].value = '获取短信验证码';
                    clearTimeout(timer);
                    return false;
                }
                input[4].value = time;
            },1000);
        };
    }
    input[6].onclick = function(){
        //判断checked
        if (input[5].checked) {
            is_submit = true;
        }else{
            is_submit = false;
            alert('未勾上阅读并接受 《百度用户协议》 及 《百度隐私权保护声明》');
        }
        if (!is_submit) {
            return false;
        }
    };
    //提示内容出现隐藏
    input[0].onclick = function(){
        for (var i = 0; i < show.length; i++) {
            show[i].style.display = '';
        }
        show[0].style.display = 'inline-block';
    };
    input[1].onclick = function(){
        for (var i = 0; i < show.length; i++) {
            show[i].style.display = '';
        }
        show[1].style.display = 'inline-block';
    };
    input[2].onclick = function(){
        for (var i = 0; i < show.length; i++) {
            show[i].style.display = '';
        }
        show[2].style.display = 'inline-block';
    };
    input[3].onclick = function(){
        for (var i = 0; i < show.length; i++) {
            show[i].style.display = '';
        }
    };
</script>
</html>

相关文章

  • java正则使用

    正则切割 正则捕获 正则完全匹配

  • regexp 正则包

    正则对象 正则使用都是通过创建对应的正则对象,调用对象方法所实现。 新建正则对象 正则对象属性方法 正则方法 一般...

  • 个人书画作品之四

    写楷心得 字正则心正,心正则人正,人正则德正,德正则身正, 身正则形正,形正则意正, 意正则气正,一气化三清。 ...

  • 第七天正则表达式

    正则表达式的理念: 正则的使用方法: 正则里string两个方法: 使用正则找字母的几种写法: 正则的转义: 正则...

  • 心正笔正

    心正则意正!心正则身正! 心正则言正!心正则行正! 心正则笔正!心正则字正! 心正则并勤!勤尽则字成! 心清则目明...

  • git一次删除多个文件

    正则 非正则

  • day17-正则表达式

    正则表达式符号含义 通配符与正则区别? 正则表达式中注意事项 正则表达式分类: 基本正则(BRE) ※ 扩展正则表...

  • Js正则匹配常用案例

    1 用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 前端表单验证常用的15个JS正则表达式

    1.用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 2019-06-15 JS

    email正则, url正则

网友评论

      本文标题:正则

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