正则表达式

正则表达式

一、概念

regular expresion

由 普通字符 及 特殊字符 组成的对 字符串 进行 过滤 的公式

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);

  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

  3. 正则表达式的特点是:

    灵活性、逻辑性和功能性非常的强;

    可以迅速地用极简单的方式达到字符串的复杂控制

二、创建方式:

1、字面量

​ var reg = /a/gim; //m表示多行匹配

2、构造函数

new RegExp(“abc”,“gim”);

<script>
	//1/字面量
	// var reg = /abc/;
	//2/构造函数
	var reg = new RegExp("abc");
	//test方法 正则表达式的方法  用来检测正则字符串中是否含有符合规则的子串,
	// 有返回true 无返回false
	var str="abc"
	var flag = reg.test(str);
	console.log(flag);
	//修饰符
	//g 表示全局匹配   i匹配忽略大小写  m多行匹配
	var reg = /abc/gi;
	var str = "abcabcfcdfcsabcABC"
	//match方法   字符串方法
	console.log(str.match(reg))//["abc", "abc", "abc", "ABC"]
	//search 方法  用于查找符合规则的子串的位置,只返回第一个匹配的位置
	var reg=/abc/;
	var str = "12345abc"
	console.log(str.search(reg));//5
	//split 
	var reg = /good/;
	var str="good good study";
	console.log(str.split(reg));// ["", " ", " study"]
	// replace
	var reg = /tmd/ig;
	var str = "abc tmd abc TMD";
	console.log(str.replace(reg,"*"))//abc * abc *
	//exec正则表达式的方法,将匹配成功的内容放在数组里
	//如果没有匹配成功返回none
	var reg = /good/g;
	var str ="good good study";
	console.log(reg.exec(str))//一次只能返回一个下标,要获得全不,
	// 需要多调用几次,没有符合字符串的时候返回none
	//["good", index: 0, input: "good good study"]
	console.log(reg.exec(str))
	//["good", index: 5, input: "good good study"]
	</script>

三、修饰符

g 表示全局匹配 i匹配忽略大小写 m多行匹配

四、方法

1、reg.test(str)

test方法 正则表达式的方法 用来检测正则字符串中是否含有符合规则的子串,有返回true 无返回false

var str="abc"
var flag = reg.test(str);
console.log(flag);
2、reg.exec(str)

/exec正则表达式的方法,将匹配成功的内容放在数组里,一次只能返回一个下标
/如果没有匹配成功返回none

var reg = /good/g;
	var str ="good good study";
	console.log(reg.exec(str))//一次只能返回一个下标,要获得全部,
	// 需要多调用几次,没有符合字符串的时候返回none
	//["good", index: 0, input: "good good study"]
	console.log(reg.exec(str))
	//["good", index: 5, input: "good good study"]	
3、reg.lastIndex(str)

下次索引从哪开始

返回下次开始的下标

4、使用RegExp对象的字符串函数
var pattern = /good/ig; //全局搜索
var str = 'good good study!,day day up!';
1,使用 match 方法获取获取匹配数组a
alert(str.match(pattern)); //匹配到两个 good,good
2,使用 search 来查找匹配数据
alert(str.search(pattern)); //查找到返回下标,否则返回-1
3,使用 replace 替换匹配到的数据(找到并替换)
alert(str.replace(pattern, 'hard')); //将Good替换成了hard
4,使用 split 拆分成字符串数组,
 var arr = str.split(pattern); //将按空格拆开字符串成数组

五、特殊字符

正则中的特殊字符:

1、单个字符:

​ ^:正则开始

​ $: 正则结束

​ .: 表示任意一个字符

​ .: 表示转义字符 .表示.

​ +: 表示其前面紧挨着的字符至少出现1次 等价{1,}

​ * :表示其前面出现的字符至少出现过0次 等价{0,}

​ ?: 表示其前面出现的字符至少出现过0次,至多1次 等价{0,1}

​ | : 表示或者

2、组合字符:
   \d : 0-9之间的任意一个数字 \d只占一个位置 

  \D : 除了\d

 \w : 数字,字母 ,下划线 0-9 a-z A-Z _ 

 \W : 除了\w

 \s : 空格或者空白等 

  \S : 除了\s
3、括号:

​ {m,n}表示括号前面紧挨着的字符至少出现m个,至多出现n个 : 以b开头 至少3个a 至多5个a /^ba{3,5}&/

​ {m}表示括号前面紧挨着的字符只能出现m个

 {m,}表示括号前面紧挨着的字符至少出现m个

​ [] 表示括号内的任意一个字符

​ [a-z]表示任意一个小写字母 [a-zA-z0-9]

  \[^  ]表示非括号内的任意一个字符

 ()一般与或连用 表示优先级

 [\u4e00-\u9fa5] 任意一个中文字符
<script type="text/javascript">
	//. 除了换行符之外的所有单个字符
	var reg=/g..gle/gi;
	var str = "googleg--gle";
	console.log(reg.test(str))//true
	console.log(str.match(reg))//["google", "g--gle"]
	//* 重复多次匹配 匹配任意次(0-n)
	var reg = /g*gle/gi;
	var str = "ggggle";
	console.log(reg.test(str));
	console.log(str.match(reg));//["ggggle"]
	//+至少有1次重复匹配
	var reg = /g+gle/gi;
	var str = "gle"
	console.log(reg.test(str));//false
	console.log(str.match(reg));
	//? 匹配0或者1次
	var reg = /g?gle/gi;
	var str = "gggggggle"
	console.log(reg.test(str));//true
	console.log(str.match(reg));//["ggle"]
	//[] 表示出现的范围[0-9] [a-z] [A-z]
	var reg = /[0-9]/gi;
	var str="abc";
	console.log(reg.test(str))//false;
	// \w 数字 字母下划线等同于[0-9a-zA-Z_]
	var reg = /\w/gi;
	var str="abc13_";
	console.log(reg.test(str))//true
	console.log(str.match(reg))//["a", "b", "c", "1", "3", "_"]
	// \W 非数字 字母下划线
	// \d 表示数字[0-9] 
	// \D 表示非数字 
	// \s 匹配空格
	var reg = /\s+/gi;
	var str = "good good   stydy";
	console.log(str.replace(reg,""))
	//{m,n}  至少匹配m次,至多匹配n次
	var reg = /go{3,6}gle/gi; //可以写成{3,}至少匹配3次
	//{3}只匹配3次
	var str="gooogle";
	console.log(reg.test(str));
	// /^ 匹配开始  $/匹配结尾
	var reg = /^g.+g$/;
	var str= "gooogle";
	console.log(reg.test(str))
	//|或
	var reg =/google|baidu|bing/gi;
	var str ="www.baidu.com";
	console.log(reg.test(str),str.match(reg))//["baidu"]
	//()分组 将内容作为一个整体进行匹配
	var reg =/(google)/gi;
	var str ="googleaaagoogiegooglegooglegoogle";
	console.log(reg.test(str),str.match(reg))
	console.log(RegExp.$1);//获取分组内容
	//$1  $2 
	var reg =/(.*)\s(.*)/; // 可以交换字符中的位置
	var str = "taobao baidu";
	console.log(str.replace(reg,"$2 $1"))
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值