JS正则

全选与反选

    • 正则匹配的方法
    • 正则语法

正则的作用:
1、对表单域项目(用户名、密码、邮箱、qq号码、手机等等)进行验证

2、网络爬虫(一个网站到另一个网站的页面上去获取对方的相关信息)

3、内容替换、获取

4、前台的验证、正则处理满足条件的字符串(网络爬虫 Python编程)数据采集(大宗点评:商家评论 抓取) curl函数库:模拟http请求。

创建方式

//字面量
	var reg = /hello/;
	console.log(reg);   	// /hello/    
       
//构造函数
	var reg = new RegExp('hello');
	console.log(reg);		// /hello/

正则匹配的方法

1.test()方法

  • 判断正则表达式是否匹配成功
  • 成功返回true,失败返回false
var str = 'aabcaa';

//var obj = new RegExp('aaa');		//false
var obj = /aa/;			//true
//匹配str中是否有obj的内容,有就返回true,没有返回false
var reg = obj.test(str);
document.write(reg);

2.exec()方法

  • 匹配符合正则表达式条件的数据
  • 成功返回数组
  • 失败返回null
var str = 'aabcaaefaa';

// var obj = new RegExp('aaa','g');		//null
//g表示全局匹配
var obj = /aa/g;			
document.write(obj.exec(str));
var row;
while(row = obj.exec(str)){
	document.write(row);		//aaaaaa
}

3.search() 方法

  • 语法:字符串对象.search(待查找的字符串|正则)
  • 作用:用于搜索字符串中指定的元素
  • 返回:返回符合条件的第一个元素下标,没找到返回-1
var str = "hello world world"; 
var reg = str.search(/world/);
console.log(reg);		//6
var reg1 = str.search('world');
console.log(reg1);		//6
var reg2 = str.search("aa");
console.log(reg2);		//-1

4.match()方法

  • 语法:字符串对象.match(待匹配的字符串|正则表达式)
  • 作用:匹配符合条件的内容
  • 返回:返回一个数组,失败返回null
var str = "hello world world"; 
var reg = str.match(/word/g);
console.log(reg);		//["world", "world"]
var reg1 = str.match('aa');
console.log(reg1);		//null

5.replace() 方法

  • 语法:字符串对象.replace(待匹配的字符串|正则表达式,替换的内容)
  • 作用:用于替换字符串中的数据
  • 返回:返回新的字符串(替换后的字符串)
var str = "hello world world"; 
var reg = str.replace('world','js');
console.log(reg);		//hello js world
var reg1 = /world/;
console.log(str.replace(reg1,'hello'));		//hello hello world
var reg2 = /world/g;
console.log(str.replace(reg2,'js'));		//hello js js

正则语法

说明 正则
匹配a-z任意一个字符 [a-z]
匹配A-Z任意一个字符 [A-Z]
匹配26个英文字母(大小写) [a-zA-Z]
匹配一个数字 [0-9]
匹配一个字符可以是数字、字母和下划线 [0-9a-zA-Z_]
匹配非数字,^表示取反 [^0-9]
匹配非字母,^表示取反 [^a-zA-Z]
匹配数字,相当于:[0-9] \d
匹配非数字,相当于[^0-9] \D
匹配数字、字母、下划线,相当于:[0-9a-zA-Z_] \w
匹配非数字、字母、下划线,相当于:[^0-9a-zA-Z_] \W
匹配空白字符串(空格) \s
匹配非空白字符串 \S
匹配所有字符 .
指重复0到多次,如:/8*/ 可以出现,也可以没有 *
指重复1到多次,至少出现一次 /a+/,如:/8+/ 至少有一个8 +
指重复0到1次,最多一次,如:/8?/ 最多有一个8
指匹配n次,如:/8{3}/ 含义出现3次,也就是 888 {n}
指匹配n到m次,如:{1,8} 匹配1~8次 /a{1,8}/ {n, m}
指匹配至少n次,如:/8{3,}/ 含义出现至少3,连续8,如88888 {n, }
限定行首数据 ^
限定行尾数据 $

utf8检测:[\u4E00-\u9FA5]
1.手机号隐藏中间四位

 var  str = '18336622568';
 var reg = /^(\d{3})\d{4}(\d{4})$/;
  // console.log(reg.test(str));
  // $1表示第一个小括号匹配到的内容
  // $2 表示第二个小括号匹配到的内容
 var newStr = str.replace(reg,'$1****$2');
 console.log(newStr);		//183****2568

$n是在字符串的替换函数replace中使用到,替换满足正则条件的字符串。
2.表单验证

//body
	用户名:<input type="text" name="" id="user" value="" /><span></span><br />
	密码:<input type="text" name="" id="pass" value="" /><span></span><br />
	重复密码:<input type="text" name="" id="pass2" value="" /><span></span><br />
	<input type="button" name="btn" id="btn" value="提交" />
//js
//	1.用户名        用户名仅支持中文、字母、数字、“-”“_”的组合,4-20个字符
//	2.密码的规则      数字字母特殊字符,一种类型,弱。两种类型为中,三种类型为强,6-20个字符
//	3.重复密码         跟第一次输入 密码一致
//	4.提交按钮的时候,判断所有输入数据是否符合。符合跳转,否,不跳
		
	var ouser = document.getElementById("user");
	var opass = document.getElementById("pass");
	var opass2 = document.getElementById("pass2");
	var obtn = document.getElementById("btn");
//		每个输入框的状态:成功/失败,初始为失败
	var x = false;
	var y = false;
	var z = false;
	
	ouser.onblur = function(){
		//用户名的正则
		var reg = /^[\w\-\u2E80-\u9FFF]{4,20}$/
		if(reg.test(this.value)){
			this.nextElementSibling.innerHTML = "可以使用";
			x = true
		}else{
			this.nextElementSibling.innerHTML = "不符合规则,请输入中文、字母、数字、“-”“_”的组合,4-20个字符";
			x = false
		}
	}
	
	opass.onblur = function(){
		if(this.value != opass2.value && opass2.value != ""){
			opass2.nextElementSibling.innerHTML = "两次不一致";
			z = false
		}
		
		if(this.value.length>=6 && this.value.length<=20){
//				三种情况的开关的定义,出现了一种就对应的改成1
			var a = 0;
			var b = 0;
			var c = 0;
			//是否出现数字的正则
			var numReg = /\d+/g;
//				if(numReg.test(this.value)){
//					a = 1
//				}else{
//					a = 0;
//				}
			a = numReg.test(this.value) ? 1 : 0;
			
			//是否出现字母的正则
			var azReg = /[a-zA-Z]+/g;
//				if(azReg.test(this.value)){
//					b = 1
//				}else{
//					b = 0;
//				}
			b = azReg.test(this.value) ? 1 : 0;
			
			//是否出现特殊的正则
			var tsReg = /[^a-zA-Z0-9]+/g;
//				if(tsReg.test(this.value)){
//					c = 1
//				}else{
//					c = 0;
//				}
			c = tsReg.test(this.value) ? 1 : 0;
			
//				三种情况都判断之后,验证开关的结果
			var str = ""
			switch(a+b+c){
				case 1:
					str = "简单";break;
				case 2:
					str = "一般";break;
				case 3:
					str = "困难";break;
			}
			this.nextElementSibling.innerHTML = str;
			y = true;
		}else{
			this.nextElementSibling.innerHTML = "长度不符合";
			y = false
		}
	}
	
	opass2.onblur = function(){
		if(this.value == opass.value){
			this.nextElementSibling.innerHTML = "一致";
			z = true
		}else{
			this.nextElementSibling.innerHTML = "两次不一致";
			z = false
		}
	}
	
//		判断所有输入框的状态
	obtn.onclick = function(){
		if(x&&y&&z){
			alert("提交成功")
		}else{
			alert("提交失败")
		}
	}

你可能感兴趣的:(JavaScript)