正则表达式

目录

1. 正则表达式概述

1.1 什么是正则表达式

1.2 正则表达式的特点

2. 正则表达式在 JavaScript 中的使用

2.1 创建正则表达式

2.2 测试正则表达式 test

3. 正则表达式中的特殊字符

3.1 正则表达式的组成

3.2 边界符

3.3 字符类

3.4 量词符

3.5 括号总结

3.6 预定义类

4. 正则表达式中的替换

4.1 replace 替换

4.2 正则表达式参数


#博学谷IT学习技术支持#

1. 正则表达式概述

1.1 什么是正则表达式

正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正
则表达式也是对象。

1.2 正则表达式的特点

1. 灵活性、逻辑性和功能性非常的强。
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。比如: ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
4. 实际开发,一般都是直接复制写好的正则表达式. 但是要求会使用正则表达式并且根据实际情况修
改正则表达 式. 比如用户名: /^[a-z0-9_-]{3,16}$/

2. 正则表达式在 JavaScript 中的使用

2.1 创建正则表达式

1. 通过调用 RegExp 对象的构造函数创建
var 变量名 = new RegExp(/ 表达式 /);

2. 通过字面量创建 

var 变量名 = / 表达式 /;

// 注释中间放表达式就是正则字面量

2.2 测试正则表达式 test

test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测

试字符串。 

regexObj.test(str)
1. regexObj 是写的正则表达式
2. str 我们要测试的文本
3. 就是检测 str 文本是否符合我们写的正则表达式规范

3. 正则表达式中的特殊字符

3.1 正则表达式的组成

一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如
/ab*c/ 。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、
+ 等。
特殊字符非常多,可以参考:
MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
jQuery 手册:正则表达式部分
正则测试工具: http://tool.oschina.net/regex

3.2 边界符

正则表达式中的边界符(位置符 )用来提示字符所处的位置,主要有两个字符
边界符说明
^表示匹配行首的文本
$表示匹配行尾的文本
如果 ^ 和 $ 在一起,表示必须是精确匹配。

3.3 字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括
号内。
1. [ ] 方括号
/[abc]/.test('andy')            // true
后面的字符串只要包含 abc 中任意一个字符,都返回 true 。
2. [-] 方括号内部 范围符-
/^[a-z]$/.test(c')               // true

方括号内部加上 - 表示范围,这里表示 a 到 z 26个英文字母都可以。

3. [^] 方括号内部 取反符^

/[^abc]/.test('andy')        // false

方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。  

注意和边界符 ^ 区别,边界符写到方括号外面。 

4. 字符组合
/[a-z1-9]/.test('andy')         // true

方括号内部可以使用字符组合,这里表示包含 a 到 z 的26个英文字母和 1 到 9 的数字都可以。

3.4 量词符

词符用来设定某个模式出现的次数。 

var reg = /^[0-9a-z]{6,16}$/;    

console.log(reg.test('andy123'));       

console.log(reg.test('andy'));

案例:用户名验证  

功能需求:
1. 如果用户名输入合法, 则后面提示信息为 : 用户名合法,并且颜色为绿色
2. 如果用户名输入不合法, 则后面提示信息为: 用户名不符合规范, 并且颜色为绿色
<style>
        .r {
            color: green;
        }

        .w {
            color: red;
        }
    </style>
</head>

<body>
    <input type="text"><span></span>
    <script>
        var ipt = document.querySelector('input');
        var span = document.querySelector('span');
        var reg = /^[a-z-_]{4,10}$/;
        ipt.onblur = function () {
            if (reg.test(ipt.value)) {
                span.innerHTML = '你输入正确';
                span.className = 'r';
            } else {
                span.innerHTML = '你输入错误';
                span.className = 'w';
            };
        };
    </script>
</body>

3.5 括号总结

1. 大括号 量词符. 里面表示重复次数
2. 中括号 字符集合。匹配方括号中的任意字符.
3. 小括号 表示优先级

3.6 预定义类

预定义类 指的是某些常见模式的简写方式。

案例:表单验证  

1. 手机号码: /^1[3|4|5|7|8][0-9]{9}$/
2. QQ: [1-9][0-9]{4,} (腾讯QQ号从10000开始)
3. 昵称是中文: ^[\u4e00-\u9fa5]{2,8}$

4. 正则表达式中的替换

4.1 replace 替换

replace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达
式。
stringObject.replace( regexp/substr , replacement )
1. 第一个参数: 被替换的字符串 或者 正则表达式
2. 第二个参数: 替换为的字符串
3. 返回值是一个替换完毕的新字符串
代码演示:
    <script>
        //  replace 替换
        var str = 'abcdef';
        var newStr = str.replace('ab','AB');
        console.log(newStr);
        var newStr = str.replace(/a|b/g,'Y');
        console.log(newStr);
    </script>

4.2 正则表达式参数

/表达式/[switch]

switch(也称为修饰符) 按照什么样的模式来匹配. 有三种值:
g:全局匹配
i:忽略大小写
gi:全局匹配 + 忽略大小写
案例:敏感词过滤
代码演示:
<style>
        .txt {
            width: 200px;
            height: 100px;
            resize: none;
            outline: none;
            vertical-align: bottom;
        }

        li {
            color: red;
        }
    </style>
</head>

<body>
    <textarea class="txt"></textarea>
    <button>发布</button>
    <ul></ul>
    <script>
        var txt = document.querySelector('.txt');
        var btn = document.querySelector('button');
        var ul = document.querySelector('ul');
        btn.onclick = function () {
            var val = txt.value.replace(/大傻瓜|傻狗/g, '**');
            var li = document.createElement('li');
            li.innerHTML = val;
            ul.appendChild(li);
            txt.value = '';
        };
    </script>
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值