Js的正则表达式详解

正则表达式简介

Java RegExp对象,可以对字符串执行模式匹配。主要用于输入处验证输入的字符串是否合法,指定用户输入字符串的格式。

定义方法

  1. 直接定义: var a=/ 格式/
  2. 创建RegExp对象: var a=new RegExp(“pattern”,“attributes”)
    注:pattern可以是字符串,也可以是正则表达式;当为正则表达式时,后面的attributes省略;
    attributes:匹配方式。只有三个参数:i,g,m;i:表示不区分大小写匹配,g:查找所有匹配,m:多行匹配

定义规则

  1. 方括号[ ]:表示匹配括号中的所有元素, var a=/[a~z]/ 表示匹配a~z的字符串

  2. 花括号{ }:表示匹配多少个字符,与方括号一起使用 var a=/[a~z]{3}/ 表示匹配连续3个a~z的字符串;var a=/[a~z]{2,3}/ 花括号内表示满足区间[2,3]的数

  3. 小括号( ):表示提取字符串

  4. ^ 符号:
    4.1、 表示匹配一个字符串开头 var a=/ ^ [a-z] / 表示以小写字母开头;
    4.2、 当^符号出现在[ ]里面第一的位置,表示不包含此字符串 var a=/ [^a] / 表示不能有a

  5. $ 符号:表示匹配一个字符串的结尾 var a=/d$/ 表示以d 结尾

  6. 转义字符:
    在这里插入图片描述

  7. 量词:
    在这里插入图片描述

一些常用的js正则表达式:

  1. 用户名正则
//用户名正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//输出 true
console.log(uPattern.test("iFat3"));

2.密码强度正则

//用户名正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//输出 true
console.log(uPattern.test("iFat3"));

3.Email正则

//Email正则
var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//输出 true
console.log(ePattern.test("65974040@qq.com"));

4.身份证号正则

//身份证号(18位)正则
var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
//输出 true
console.log(cP.test("11010519880605371X"));

5.URL正则

//URL正则
var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//输出 true
console.log(urlP.test("http://42du.cn"));

6.IPV4地址正则

//ipv4地址正则
var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
//输出 true
console.log(ipP.test("115.28.47.26"));

7.日期正则

//日期正则,简单判定,未做月份及日期的判定
var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;
//输出 true
console.log(dP1.test("2017-05-11"));
//输出 true
console.log(dP1.test("2017-15-11"));
//日期正则,复杂判定
var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;
//输出 true
console.log(dP2.test("2017-02-11"));
//输出 false
console.log(dP2.test("2017-15-11"));
//输出 false
console.log(dP2.test("2017-02-29"));

8.包含中文正则

//包含中文正则
var cnPattern = /[\u4E00-\u9FA5]/;
//输出 true
console.log(cnPattern.test("42度"));

正则表达式方法

1:test()方法:在字符串中查找符合正则的内容,若查找得到返回true,否则false;
    格式:正则.test(字符串);
2:search()方法:搜索符合正则的第一次出现的位置,若搜索到返回第一次出现的位置,否则返回-1。
    格式:字符串.search(正则);
3:match()方法:获取正则匹配的结果,以数组的形式返回。
    格式:字符串.match(正则);
4:exec()方法:捕获符合正则的字符串,若捕获到符合正则的字符串返回一个Array的实例,但它包含了两个额外的属性index和input。index表示符合正则字符串出现的位置;input表示字符串表达式的字符串。
    格式:正则.exec(字符串)
5:replace方法:用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
    格式:字符串.replace(正则|字符串,字符串|回调函数)
  5.1、字符串.replace(字符串,字符串|回调函数)   //这里回调函数必须返回的是一个字符串
  5.2、字符串.replace(正则,字符串)
  5.3、字符串.replace(正则,回调函数)
      每匹配到一个正则就会调用一次回调函数,每次回调都会传递以下参数:
        result:本次匹配到的结果
        $1-$9:正则中有多少个()就表示有多少个参数
        offset:记录本次匹配的开始位置
        source:接受匹配的原始字符串
    例:将电话号码加密
     var str=number.slice(3,7);
    number.replace(new RegExp(str,g),"******");
    15212345678 —> 152 ***** 678

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值