JS-正则表达式匹配获取

\ 表示转义字符

. 表示一个任意字符

*+? 表示字符个数

{n,m} 表示字符个数

^$ 表示开始与结束

[^] 表示非

\d 表示1个数字

\w 表示一个字符(不包含中文)

\s 表示一个空白字符

 () 表示优先级,提取组

| 表示或

 

 

方式一:var regObj=new RegExp('\\d{5}');

方式二:var regObj=/\d/;

推荐使用第二种方式,这种方式是js中专为正则表达式提供的语法,不需要考虑转义字符的影响

 

exec(string):检索字符串中的指定值,返回值是被找到的值,如果没有发现匹配,则返回 null,功能同C#中的Match

全局模式g:在正则表达式末尾加上g,结合循环遍历所有匹配的项,功能同C#中的Matches

示例3:提取一个字符串中所有的电话号码

示例数据:火车12306电信10000火警119哈哈

示例4:提取号码中的第2位数字

 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script>
        //1、匹配test
        //2、提取exec
        //3、替换:字符串对象的replace
        //4、全局模式g:使用时表示匹配所有,不使用表示匹配第一个

        onload = function () {
            //匹配test
            document.getElementById('btnTest').onclick = function() {
                //构造正则表达式对象
                //var regExp = /^\d{6}$/;//邮政编码
                var regExp=/\w+@[a-z0-9]+\..+/;//电子邮箱123@qq.com
                //获取用户输入的值
                var txtMsg = document.getElementById('txtMsg').value;
                //进行匹配
                if (regExp.test(txtMsg)) { //匹配成功返回True
                    alert('ok');
                } else {//匹配失败返回false
                    alert('no');
                }
            };
            
            //提取exec
            document.getElementById('btnExec').onclick = function() {
                var str = '火车12306电信10000火警119哈哈';
                //g表示全局模式,如果不加表示提取第一个,加了表示提取所有
                var reg = /\d+/;//匹配电话号码,连续的数字
                //var result = reg.exec(str);//如果未匹配到结果,则返回null,如果匹配到结果,则返回匹配的值,类型是数组
                //使用全局模式时,结合循环来写
                while (true) {
                    var result = reg.exec(str);
                    if (result == null) {
                        break;
                    }
                }
            };
            
            //提取组exec
            document.getElementById('btnExecGroup').onclick = function() {
                var str = '火车12306电信10000火警119哈哈';
                var reg = /\d(\d)\d*/g;//使用()完成提取组的功能
                while (true) {
                    var result = reg.exec(str);
                    //提取组时,结果数组中的0元素表示本身,从1元素开始是与(匹配的内容
                    if (result == null) {
                        break;
                    }
                }
            };
            
            //替换:字符串对象的replace方法,将正则对象作为参数
            document.getElementById('btnReplace').onclick = function() {
                //如果使用全局模式g,表示匹配多个;如果不使用g表示只匹配第一个
                var reg = /\s+/g;
                var str = "  abc  ";
                document.getElementById('txtMsg').value = '1' + str.replace(reg, '') + '1';
            };
        };
    </script>
</head>
<body>
    <input type="text" id="txtMsg"/>
    <input type="button" id="btnTest" value="匹配test"/>
    <input type="button" id="btnExec" value="提取exec"/>
    <input type="button" id="btnExecGroup" value="提取组exec"/>
    <input type="button" id="btnReplace" value="去除空格"/>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值