正则

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容