2-JavaScript正则表达式

一,正则表达式:

Js中的一种对象,一般用来验证用户输入的字段是否符合一定的规则,比如提交密码认证时输入的密码具有某种规范-(既有字母,又有数字,还有特殊符号)

二,正则表达式的创建:

字面量创建方式:

var reg=/\./ig	//i--->大小写不敏感,g---->全局匹配,m--->多行匹配

new RegExp()函数创建:new RegExp()函数创建:

var reg=new RegExp("huangshang","igm")		//另一种方法,第一个参数为正则表达式,第二个参数为匹配的限制
var reg=re.test(re2) 	 		//re2中有没有re(正则调用)

三,写法举例

var reg=/[a-c][a-c]/		//找出符合规则的子串(第一位a-c,第二位a-z)
var reg=/^a/			//以a字符开头的字符串
var reg=/a$/			//以a字符结尾的字符串
var reg=/[abc]/			//包含abc中的任意一个字符匹配的字符串
var reg=/\.(jpg|png)$/		//.jpg或者.png结尾的字符串
var reg=/[^a]/			//^放在[ ]里面表示非
var reg=/([a-z])\1/gi;		//反斜杠,"\num" 反向引用--括号
var reg1=/([a-z0-9])([a-z0-9])\1\2/gi	//XYXY型
str1.replace(reg1,"$1$1$2$2")		//将匹配得到的XYXY类型的字符串,替换为XXYY 类型

四,关于正则表达式的方法

正则表达式.test(字符串变量)	//字符串变量中是否有正则表达式,返回值为布尔值
正则表达式.exec(字符串变量)	//字符串变量中是否有正则表达式,返回值为一个匹配成功的规则(数组))
字符串.match(正则表达式)		//返回元素为匹配的正则表达式的数组
字符串.replace(表达式1,表达式2)	//检索表达式1,替换为表达式2
字符串.search(正则表达式)		//检索正则表达式,返回检索位置
字符串.split("分隔符")		//分割字符串,参数为指定分隔符
new ReExp() 			//创建正则表达式
字符串.replace("被替换的",将要替换)	//替换

五,元字符

\s		//代表一个空白字符
\S		//[space]
\w		//常用(英文、数字)字符
\W		//非“常用字符”,除英文和数字之外的所有字符(特殊字符)
\d		//数字
\D		//非数字

六,量词

var reg=/[a]{3}/	//匹配三个以上的a,[a]{startnum,endnum}代表startnum和endnum之间数目的字符串,endnum可以不要
var reg=/[a]+/		//匹配至少一个a,多个也行
var reg=/[a]*/		//匹配零个以上a
var reg=/[a]?/		//0个或1个a
var reg=/\d(?=[a-z])/ig		//某个位置后面跟着特定的字符
var reg=/\d(?![a-z])/ig		////某个位置后面不跟着特定的字符
var reg=/\*/		//验证特殊字符"*"

七,正则实例属性

.source			//字面量形式对应的字符串
.lastIndex		//下一次匹配的下标

八,例题

//验证数字(.12,23455,+2,-1)
	var str1="-50322201"
	var reg1=/^((^-?([0]\.\d+$))|(^-?(\.\d+$)))|(^-?([1-9]\d*((\.\d+$)|\d*$)))/
	console.log(reg1.test(str1));
// 验证格式2019-3-23
	var str2="3672-09-08"
	var reg2=/(^([2-9]\d\d\d)|(19[7-9][0-9]))-((0?[1-9])|(1[0-2]))-(((0?[1-9])|[1-2][0-9])|(3[0-1]))$/
	console.log(reg2.test(str2));
//验证手机号
	var str3="15333654427"
	var reg3=/^1[3-9]\d{9}$/
	console.log(reg3.test(str3));
 // 验证既包含数字,又包含字母和下划线
	var str4="^4_a12"
	var reg4=/^(?=.*\d+)(?=.*[a-z]+)(?=.*_+).{3,}$/
	console.log(reg4.test(str4));
//验证邮箱(214637@qq.com|cn)
	var str5="2148_37@qq.com"
	var reg5=/^\w+@\w+\.(com|cn)$/
	console.log(reg5.test(str5));
//验证中文
	var str6="中s大幅度da国"
	var reg6=/[\u4E00-\u9FFF][\u4E00-\u9FFF]/
	console.log(reg6.test(str6));
// 字符串去重
	var str7="agrdrgjgAfe";
	var reg7=/([\w\W])(?=.*\1+)/g;//加括号才能显现出来,不加括号不行
	console.log(str7.match(reg7));
	//将查找出来的字符替换成空字符串"",则完成字符串的去重
	console.log(str7.replace(reg7,""));

九,笔试题

//去掉字符串的头尾空格
方法1:字符串.tirm()
方法2:正则表达式
var reg=/\s/g
var str=" hello"
console.log(str.match(reg))
方法3:纯js语言(for循环)

//判断重复次数或者是否存在
var str="ellods"
var re=str.indexOf("lo")				//返回值为索引-匹配成功,否则返回-1
console.log(re)
字符串.match(正则)					//返回一个数组或者null,数组的元素个数为重复次数
posted @ 2022-07-11 20:15  徐啊伟  阅读(69)  评论(0)    收藏  举报