正则表达式

7 篇文章 0 订阅
4 篇文章 0 订阅

思维导图

在这里插入图片描述

①字面量写法
var expression = /pattern/flags; pattern指的是匹配规则
test()校验匹配规则是否符合,对为true,错是false

//1.字面量写法
		var str = 'mjj';
		var p= /mjj/g;//g全局搜索
		console.log(p.test(str));

②构造函数写法
RegExp(‘pattern’,‘flags’);

//2.构造函数写法 RegExp(pattern,flags)
		var str2='pptlll';
		var p1=new RegExp('ppt','g');
		console.log(p1.test(str2));//true 因为str2中存在ppt这一截 
元字符
  • (’.’)匹配所有的字符

  • ^ $ 位置字符

    ^ 匹配字符串开始的位置
    $ 匹配字符串结束的位置

  • 匹配数字和字母(/w和/W)

    /w 匹配数字和字母
    /W 匹配非数字和非字母

  • 匹配数字和非数字(/d和/D)

    /d数字
    /D非数字

  • 匹配空白字符(/s和/S)

    /s空白字符
    /S非空白字符

字符集合
  • 匹配里面的任意字符[]

    eg:[a-zA-Z0-9]

  • 匹配中文[\u4e00-\u9fa5]

  • 匹配除字符集以外的所有字符[^]

    eg:[^a-z]

  • 匹配一次或多次 +

    eg:/mj+/g , /[mM][jJ]+/g

  • 匹配0次或多次 *

    eg:/[mM]+[#\$%%\$&\(&@}\)]*/g 元字符前需要写转义字符

  • 匹配0次或1次 ?

    eg:/[mM]+y?[#\$%%\$&\(&@}\)]*/g

  • 分组匹配 ()

  • 或者 |

  • 分组匹配不捕获 ?:

    捕获方法:RegExp.$1

  • 正向肯定预查 ?=

    eg:?=元 表示肯定是元,但不匹配

  • 正向否定预查 ?!=

    eg:?!=元 表示肯定不是元,不匹配

  • 反向肯定预查 ?<=

    eg:?=¥ 表示肯定是¥,但不匹配

  • 反向否定预查 ?<!=

    eg:?!=¥ 表示肯定不是¥,不匹配

正向写在后面,反向写在前面

  • 输入密码之类的最多个数和最少个数

    eg:/\d{4,8}/g 密码个数在4~8的数字之间

正则实例对象的方法

test()
返回一个布尔值,表示当前模式是否能匹配参数字符串
exec()
用来返回匹配的结果,如果发现匹配,就返回一个数组,数组中的成员都是匹配的子字符串,
否则返回null

字符串方法

match()
对字符串进行正则匹配,返回匹配的结果
serach()
返回第一个满足条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1.
replace()
可以替换匹配的值。他接受两个参数,第一个是正则表达式,表示匹配模式,第二个是替换的内容

正则表达式实例
1.验证用户账号

检查用户账号
规则:由字母,数字,下划线组成,以字母开头,4-16位

function checkUser(str){
			// 模式
			var re=/^[a-zA-Z]\w{3,15}$/g;
			if(re.test(str)){
				return '对';
			}else{
				return '错';
			}
		}
		console.log(checkUser('wdivgf_3geg22'))
2.验证手机号

规则:11位,以1开头 3 5 7 8

function checkMobile(str){
			var re=/^1[3|5|7|8|9]\d{9}/g;
			if(re.test(str)){
				alert('对') ;
			}else{
				alert('错') ;
			}
		}
		checkMobile('15578320987');
3.匹配电话号码

规则:区号+号码

function checkPhone(str){
			var re=/^0\d{2,3}-?\d{7,8}$/g;
			if(re.test(str)){
				console.log('匹配正确') ;
			}else{
				console.log('匹配错误') ;
			}
		}
		checkPhone('0731-8977777');
4.匹配身份证号

规则:18位或者15位,15位全是数字 18位 前17位都是数字最后一位可能是数字或者字符x X

function checkIdcard(str){
			var re=/^(\d{15}$)|(^\d{18}$)|(^\d{17}(\d|x|X)$)/g;
			if(re.test(str)){
				console.log('身份证合法') ;
			}else{
				console.log('身份证不合法') ;
			}
		}
		checkIdcard('430124198803227564');
5.匹配邮箱

规则:第一部分@ 第二部分.com|cn|net

function checkEmail(str){
			var re = /^[a-zA-Z0-9-._]+[@][a-zA-Z0-9-._]+\.(com|cn|net)$/g;
			if(re.test(str)){
				console.log('输入邮箱格式正确') ;
			}else{
				console.log('输入邮箱格式错误') ;
			}
		}
		checkEmail('23467dnf@qw.cn');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值