Js中的正则表达式

时间:2021-12-22作者:klpeng分类:IT综合浏览:637评论:0

        正则表达式可以用于字符匹配。


目录

一、正则表达式的定义

二、 正则表达式对象的方法

三、正则表达式的符号说明

        (1)直接写入匹配的字符

        (2)使用 [ ] 

        (3) 使用预定义字符  

        (4)使用量词  

        (5)使用分组 

四、字符串中可以使用正则表达式的方法

        (1)search(reg)

        (2)split(reg)

        (3)replace("reg","rstr")

        (4)match("reg")


一、正则表达式的定义

        正则表达式在js中有下述两种定义,返回的都是正则表达式对象。

        1. var reg = /regstr/[flag] ;  其中[flag] 可以舍去。

                用//来表示一个正则表达式,//后面可以加

        2.var  reg=RegExp("regstr","flag");

               可以传入一个正则表达式参数,第二个参数可以省略。


二、 正则表达式对象的方法

var reg = /  / ;

var str = " ";

1.  reg.test("str") ; //如果str某个子串符合reg正则表达式,返回true,否则返回false.

2.  reg.exec("str") ; //返回一个object对象 ,包含str按照reg匹配到的字符的第一个下标,符合正则表达式的次数等。如果reg带有g,那么每次exec都会从上一次调用exec匹配到的下标开始匹配。


三、正则表达式的符号说明

         在上述的参数中:

其中 flag可以为:

        g: 匹配全文

        i:匹配时忽略大小写

        m:多行查找

当需要多个flag时,直接加至上一个flag后面,如: var reg = / /gi  ;  注意gi与/不要有空格

其中正则表达式(上述的regstr)里可以有:

             

        (1)直接写入匹配的字符

              直接写入要匹配的字符,可以匹配多个字符。

                例如:var reg = /abcd/gi; 

        ^ : 正则表达式的开头

        $: 正则表达式的末尾

        如果正则表达式带有上述,就会严格匹配字符串是否符合,而不是搜索全文查找符合的字符串。

        代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var reg = /abcd/gi;
			var reg1 = /^abcd$/gi;
			console.log(reg.test("jipshroabcdjie")); // 输出true
			console.log(reg1.test("jipshroabcdjie"));  //输出false
		</script>
	</head>
	<body>
	</body>
</html>

        (2)使用 [ ] 

        表示匹配[ ]内的字符中的某一个字符。只匹配一个字符。  例如:  var reg = /[a-z]/gi;

 如:

        [a-z]: 表示的是a到z中的某一个字符。

        [A-Z]: 表示的是A到Z中的某一个字符。

        [0-9]:   表示的是0到9的某一个字符。

加上^就是匹配除了[]内的字符以外的字符。如果需要匹配的包含有^  - 可以在这两个前面加上\转义符,\^, \- 。

     

            代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var reg = /[a-z0-9]c/;  //匹配两个字符
			console.log(reg.test("0c"));  // 输出true
			console.log(reg.test("ac"));  //输出true
            console.log(reg.test("Ac"));  //输出false;
		</script>
	</head>
	<body>
	</body>
</html>

        (3) 使用预定义字符  

        匹配一定范围中的一个字符   例如:  var reg = /\d\w\d/gi;

如:

        .  :一个点表示任意匹配字符中的一个字符。如果需要匹配指定"."在前面加上\

        \d: 所有数字 [0-9]中某一个字符

        \w: 表示 [a-zA-Z_0-9]中的一个字符

        \s:表示空白字符[ \t\n\x0B\f\r]中的一个字符

       上述\d,\w,\s字母大写的话就是取反,如\D就是取除了数字以外的一个字符

       代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var reg = /\d\w/;//匹配两个字符, 一个[0-9]一个[a-zA-Z_0-9];
			console.log(reg.test("1_"));  //输出true
			console.log(reg.test("5a"));  //输出true
			console.log(reg.test("6D"));  //输出true
			console.log(reg.test("Ac"));  //输出false
		</script>
	</head>
	<body>
	</body>
</html>

       

        (4)使用量词  

        可以给一个字符添加匹配次数。也是在字符后添加。

        当量词是有无数次时,当找到了满足要求的字符串,会无限的查找满足要求的,直到不满足要求才停止。

        a* :  a出现0次或无数次;  

        a+:  a出现1次或无数次;

        a?:  a出现0次或1次;

        a{m,n}: a出现m到n次;

        a{m,} : a出现的次数>=m;

        a{m}: a出现m次

上述a指的是任意一个字符或分组的多个字符。

       代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var reg = /[0-9]{1,5}[a-z]*\d+[A-Z]?/;
			console.log(reg.test("w189203J"));      //输出true
			console.log(reg.test("5782912"));       //输出true;
			console.log(reg.test("8782996666aaaa8902"));//输出true
		</script>
	</head>
	<body>
	</body>
</html>

        (5)使用分组 

                用()将多个字符看做一个整体。能够形成捕获性分组。

                当()后面跟了量词时,就会把()内的所有字符当做一个整体来算。

        代码示例:

        

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var reg = /([0-9][a-z])*/;   //  两个字符出现0次或无数次
			console.log(reg.test("1a88888")); //返回true
			console.log(reg.test("jjj"));     //返回true
			console.log(reg.test("666"));     //返回true
		</script>
	</head>
	<body>	
	</body>
</html>

        综上所述,我们发现有些符号代指了其他含义,如果我们需要用到该符号的实际含义的话,就需要在前面加上\符号,如:        (   [  {   \  ^  $  |  )  ?  *  +  . 

        


四、字符串中可以使用正则表达式的方法

var str = "  ";   //代指字符串 

var reg = / /;   //代指正则表达式

        (1)search(reg)

        //返回按照reg搜索str字符串中符合内容的第一个下标,如果没有符合的就返回-1; 

        代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var str = "uoq21hiou444gro17ds";
			console.log(str.search(/\d+/));  // 输出3
		</script>
	</head>
	<body>
	</body>
</html>

        (2)split(reg)

        //返回一个字符串数组,按照reg在str中匹配正确的字符为分割点(匹配正确的不在返回字符串数组中,只是起到分割作用)

        代码示例:

        

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var str = "uoq21hiou444gro17ds";
			console.log(str.split(/\d+/));  
		</script>
	</head>
	<body>
	</body>
</html>

        控制台输出:

Js中的正则表达式

        (3)replace("reg","rstr")

        // 在str中按照reg匹配正确的第一个字符串被替换成rstr。如果reg有g则字符串符合匹配,全文替换。

        代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			var str = "uoq21hiou444gro17ds";
			console.log(str.replace(/\d+/,"666"));  //uoq666hiou444gro17ds
			console.log(str.replace(/\d+/g,"666")); //输出uoq666hiou666gro666ds 	 
		</script>
	</head>
	<body>
	</body>
</html>

        (4)match("reg")

        //如果有reg中有g,则rstr按照reg匹配,返回所有匹配正确的数组,如果没有则返回第一次匹配成功的字符。匹配失败则返回null。

        代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>		
			var reg = /[0-9]{1,5}[a-z]*\d+[A-Z]?/;
			var str = "8782996666a8902";
			console.log(str.match(reg)); // 输出8782996666
		</script>
	</head>
	<body>
	</body>
</html>

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢