正则表达式

什么是正则表达式

正则表达式,又称规则表达式。(英语:Regular
Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

//判断字符串中是否含有数字
	for(var i = 0; i < str1.length; i++) {
		if(str1[i] <= '9' && str1[i] >= '0') {
			console.log('此字符串中包含数字' + str1[i]);
			break;
		}
	}
	// 使用正则表达式判断是否含有数字
	var reg = /\d/;
	console.log(reg.test(str1), str1.match(reg))

1.字符串分为两种
a.普通字符(元字符之外的字符)
b.元字符,含有特殊意义的字符

+ - * ? [ ] < > <= = 等
2.js中使用正则表达式的前提是必须有正则表达式对象
创建正则表达式对象
两种方式:
1> 使用new实例化正则表达式
new RegExp(参数1,参数2);
参数都是字符串
参数1 设置匹配原则,匹配的条件
参数2 设置匹配属性,该参数可选,可填写:
i 忽略大小写
g 全局匹配,结合match使用,默认检索的时候只会找到第一个匹配的字符串,就返回并结束,如果加上g就返回全局匹配的字符串
text()方法
他是正则表达式对象中的函数
使用方法
reg.test(字符串) 判断字符串是否满足设置的条件,返回的是一个boolean值

var str2 = 'ABc56we';
	var reg1 = new RegExp('abc', 'i');
	console.log(reg1.test(str2))
 **2>** 直接声明正则表达式对象
	var reg = /匹配条件/匹配属性(可选);
	此处的匹配条件和匹配属性都不加引号,也就是都不能写成字符串	
var reg2 = /abc/i;
	console.log(reg2.test(str2));
	var str3 = 'my god!';
	var reg3 = /!/;
	console.log(reg3.test(str3));
	
	var str4 = '生当作人杰';
	var reg4 = /当/;
	console.log(reg4.test(str4));

元字符

\n 换行符
\t 制表符
\r 回车符
\d 代表数字0-9
\D 代表非数字,也就是对\d的取反
\s 空白符(包含了 空格,换行符,制表符,回车符)
\S 代表非空白符,也就是对\s的取反
\w 代表字符(字母(a-z,A-Z),数字(0-9),下划线_)不包含汉字以及特殊字符
\W 代表非字符,对\w进行取反
. 代表了\n \r 之外的任意一个字符
量词
如果设置匹配规则的时候没有添加量词则仅仅匹配一个
* 个数 >=0 eg: \d*
+ 个数>=1 eg: \d+
? 个数只能为0个或者为1个
{n} 表示个数是n个
{n,m} 表示个数为n到m个
{1,} 表示个数>=1 等同于 +
{0,1} 表示个数为0个或者为1个 等同于?

	var str5 = `私以
	为鬼才`;
	var reg5 = /\t/;
	console.log(reg5.test(str5));
	
	var str6 = '至今   思项羽';
	var reg6 = /\s/;
	console.log(reg6.test(str6));
	
	//量词测试
	var str7 = 'asdf1235343545sdf';
	var reg7 = /\d{10}/;
	console.log('数字'+reg7.test(str7));
	
	var reg8 = /\d+/;  //表示至少有一个数字
	console.log('数字'+reg8.test(str7));

匹配字符

[ ] 匹配括号中出现的字符
[^] 表示字符串中不能出现括号内的内容,用来判断字符串中有没有除字符串以内的内容,^符号必须在开头位置,如果放在其他位置,他就是一个普通字符 eg [^\d] 等同于 \D

	var txt = document.getElementById("txt");
	var btn = document.getElementById("btn");
	btn.onclick = function(){
		var val = txt.value;
		var reg = /^1[345678]\d{9}$/;
		if (reg.test(val)) {
			alert('是手机号');
		}else{
			alert('不是手机号');
			
		}
	}
	
	var txt1 = document.getElementById("txt1");
	var btn1 = document.getElementById("btn1");
	btn1.onclick = function(){
		var val = txt1.value;
		var reg = /1[abc]{2}\d{9}/;
		if (reg.test(val)) {
			alert('匹配成功');
		}else{
			alert('匹配失败');
			
		}
	};

连字符

— 一般结合匹配字符使用
a-z:匹配小写的英文字母
A-Z:匹配小写的英文字母
0-9:匹配所有的数字
汉字的范围
\u4e00 - \u9fa5

	var str9 = 'aa五星红旗aa';
	var reg9 = /aa[\u4e00-\u9fa5]{2}/;
	console.log('五星红旗'+reg9.test(str9));
	
	var str10 = '12asdf45';
	var reg10 = /\d+[a-z]+/;
	console.log('12asdf45'+reg10.test(str10));

定位符

^ 指定字符串的开始位置
$ 指定字符串的结束位置
\b 指代字符串中 单词的边界 \b\w+\b 第一个\b代表的是单词的左边界,第二个\b代表的是单词的右边界

	var str11 = '13512345678';
	var reg11 = /^1[345678][0-9]{9}$/;
	console.log(reg11.test(str11)?'是手机号':'不是手机号');

选择符和分组符

|:选择符
可以选择|前面或者后面的部分
(): 把括号中的内容进行分组

	var str12 = 'aa王者荣耀aa';
	var reg12 = /(aa|bb|cc)/;
	console.log(reg12.test(str12));
	
	
	var arr= ['三国演义','孙悟空大战奥特曼','sun','ring','girl','水浒传'];
	var reg0 = /[\u4e00-\u9fa5]+/;
	for (var i=0;i<arr.length;i++){
		if (reg0.test(arr[i])) {
			console.log(arr[i]);
		}
	}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值