JS正则表达式

一、JS正则表达式匹配与搜索

<script>
    //正则的使用
    var str = "wdklfj3590alks";
    //使用正则匹配str中的数字
    console.log(str.match(/\d+/));
    //使用RegExp创建一个正则对象
    var pat = new RegExp("[0-9]+");
    console.log(str.match(pat));
    console.log(pat.exec(str));
    //以上三个返回结果一致:['3590', index: 6, input: 'wdklfj3590alks', groups: undefined]
    
    //正则匹配
    console.log(str.search(/\d+/));//6 返回首次匹配位置,没有返回-1
    console.log(str.search(pat));//6 返回首次匹配位置,没有返回-1
    console.log(pat.test(str));// true 返回是否匹配
    //匹配多个
    var str = "asd2213asd31g3g3gsd4";
    console.log(str.match(/\d+/));//默认匹配一次
    console.log(str.match(/\d+/g));//g修饰符匹配所有 ['2213', '31', '3', '3', '4']

</script>

二、JS正则表达式语法

<script>
    var str = "ssd2d3f44f33fg443g4534g4";
    console.log(str.match(/[0-9]/g));//匹配任意一位数字
    console.log(str.match(/[0-9][0-9]/g));//匹配任意两位数字
    console.log(str.match(/[0-9]{2}/g));//匹配任意两位数字
    console.log(str.match(/[0-9]{2,}/g));//匹配任意两位及以上数字
    console.log(str.match(/[0-9][0-9][0-9]/g));//匹配任意三位数字
    console.log(str.match(/[0-9]{2,4}/g));//匹配任意两位或三位数字

    // console.log(str.match(/[0-9]+/g));//匹配至少一位数字
    // console.log(str.match(/\d+/g));//匹配至少一位数字
    // console.log(str.match(/\d{1,}/g));//匹配至少一位数字
    // console.log(str.match(/[0-9]{1,}/g));//匹配至少一位数字
    //精确匹配
    var pat = new RegExp("[0-9]+");
    console.log(pat.test("as2324asd"));//true 匹配子串中是否含有数字
    var pat = new RegExp("^[0-9]+");
    console.log(pat.test("as2324asd"));//false 匹配子串中是否以数字开头
    console.log(pat.test("2324asd"));//true 匹配子串中是否以数字开头
    var pat = new RegExp("[0-9]+$");
    console.log(pat.test("as2324asd"));//false 匹配子串中是否以数字结尾
    console.log(pat.test("asd2324"));//true 匹配子串中是否以数字结尾
    var pat = new RegExp("^[0-9]+$");
    console.log(pat.test("as2324asd"));//false 匹配子串中是否是纯数字
    console.log(pat.test("2324"));//true 匹配子串中是否是纯数字
    //精确匹配任意6位数字
    var pat2 = new RegExp("^[0-9]{6}$")
    console.log(pat2.test("232411"));//true

三、JS正则表达式替换与分割

<script>
    var str = "23:34:54:65:76:87";
    console.log(str.split(":"));//使用子串拆分 ['23', '34', '54', '65', '76', '87']

    var str = "23:34;54:65!76#87";
    console.log(str.split(/[^0-9]/));//使用正则拆分 ['23', '34', '54', '65', '76', '87']
    var str = "23:34;54:65!76#87";
    //讲上面子串中的分隔符统一替换成逗号
    console.log(str.replace(/[^0-9]/g,","));//23,34,54,65,76,87
    var str = "<b>aaa</b><b>bb</b><b>ccc</b>";
    //将<b></b>标签替换成<i></i> $1表示其中重复正则中第一个小括号中内容
    console.log(str.replace(/<b>(.*?)<\/b>/g,"<i>$1</i>"));//<i>aaa</i><i>bb</i><i>ccc</i>
    //.*是贪婪匹配(最大匹配) .*?是拒绝贪婪匹配(都匹配)
    var str = "04/28/2020";
    //西方日期转换位中国日期 //其中 $1,$2,$3分别表示正则中第一第二第三个小括号中的内容
    console.log(str.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$3-$1-$2"));//2020-04-28
</script>

四、JavaScript中的正则表达式在表单验证中的实例

<body>
    <h1>JavaScript中的正则表达式在表单验证中的实例</h1>
    <form action="js03.html" name="myform" onsubmit="return doSubmit()" method="post">
        账号:<input type="text" name="uname" onblur="checkUname()" /><br/><br/>
        邮箱:<input type="text" name="email" onblur="checkEmail()"/><br/><br/>
        <input type="submit" value="提交"/>
    </form>
</body>
<script>
    //验证账号函数
    function checkUname(){
        //获取账号信息
        var uname = document.myform.uname.value;
        //执行验证
        //if(uname.match(/^[0-9A-Za-z_]{8,16}$/) == null){
        if(uname.match(/^\w{8,16}$/) == null){
            alert("请输入8~16位的账号信息!");
            return false;
        }
        return true;
    }

    //验证邮箱函数
    function checkEmail(){
        //获取账号信息
        var email = document.myform.email.value;
        //执行验证
        if(email.match(/^\w+@\w+(\.\w+){1,2}$/) == null){
            alert("请输入正确的Email信息!");
            return false;
        }
        return true;
    }
    //表单提交
    function doSubmit(){
        return checkUname() && checkEmail();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值