正则表达式

正则表达式限定符

表达式 * : 表示前面一个表达式出现0次或多次,等价于 {0,}
表达式 + : 表示前面一个表达式出现1次或者多次,等价于 {1,}
表达式 ? : 表示前面一个表达式出现0次或1次,等价于 {0,1}
表达式{n}: n是一个正整数,表示前面的表达式出现了n次。
表达式{n,m}: n 和 m 都是整数。表示前面的表达式至少出现n次,最多出现m次。

正则表达式元字符

" . ": 表示任意一个除了\n以外的字符
" | ": 表示或者,[0-9]|[a-z],表示一个数字或者一个小写字母
" ^ ": 表示以什么开始, ^ [0-9],表示以数字开始
" $ ": 表示以什么结束, ^ [0-9],表示以数字开始
" ( ) ": 表示分组,或者提升优先级
" [ ^ ] " : 表示取非,除了该字符集合。
" [ ] ": 表示任意单个字符,包括转义字符和特殊字符。可以使用破折号(-)来指定一个字符范围。

例如:
[ 0-9]: 表示0到9之间的任意一个数字
[a-z]: 表示任意一个1小写字母
[A-Z]: 表示任意一个大写字母
[a-zA-Z: 表示任意一个字母
[0-9a-zA-Z]: 表示任意一个字母或数字

1.严格模式
/ ^ [0-9][a-z] $ /,表示任意一个数字和任意一个小写字母
2.非严格模式
/ [0-9][a-z]/,表示只要有一个数字和一个字母就可以了

简写方式
\d: 代表数字,等价于[0-9]
\D: 代表非数字
\s: 空白符
\S: 非空白符
\w: 代表非特殊符号,等价于[a-zA-Z0-9_]
\W: 代表特殊符号

正则匹配字符串的方法:

1、创建对象

    var reg=new RegExp(/匹配的模式/)
    //调用方法验证字符串是否匹配
    reg.test("字符串");        //返回布尔值

2、字面量的方式

   var reg=/\d{1,5}/;         //匹配的模式
    reg.test("字符串");       //返回布尔值

例1:正则表达式匹配中文名字:

/^ [\u4e00-\u9fa5]$/

1、把中文格式变成编码格式

escape("中文字符串")

2、把编码格式变成中文格式

unescape("编码格式字符串")

例2:正则表达式匹配邮箱::

/^ [0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/

例3:判断输入的密码的级别
1级(弱):有数字、字母、特殊符号中的任意一个
2级(中):有数字、字母、特殊符号中的任意两个
3级(强):数字、字母、特殊符号都有

function getLvl(pwd){
			var lvl=0;
			//判断是否有数字
			if(/[0-9]/.test(pwd)){
				lvl++;
			}
			//判断是否有字母
			if(/[a-z][A-Z]/.test(pwd)){
				lvl++;
			}
			//判断是否有特殊符号
			if(/[^0-9][a-z][A-Z]_/.test(pwd)){
				lvl++;
			}
			return lvl;
		}

正则表达式中,g 表示全局模式匹配
正则表达式中,i 表示忽略大小写

例:把字符串中所有匹配的数字取出来

var str="中国移动:10086,中国联通:10010,中国电信10000";
var array=str.match(/\d{5}/g);
console.log(array);
/*
	var reg=/\d{5}/g;
	var result=reg.exec(str);
    while(result!=null){
    	console.log(result[0]);
    	result=reg.exec(str);
	}
*/

例:把字符串中所有匹配的邮箱取出来

var str="123@qq.com,fangfang@value.cn,28wer@xx.com,email@email.english.com..."
var array=str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);

分组提取

例:提取日期中的月的部分

var dataStr="2019-01-15"
    var arrey=dataStr.match(/(\d{4})-(\d{1,2})-(\d{1,2})/)
    if(arrey){
        console.log(RegExp.$2)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值