zoukankan      html  css  js  c++  java
  • 正则表达式

    一、正则表达式简介

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script type="text/javascript">
    			/*
    			 * 正则表达式
    			 *   admin@china.com
    			 *   邮件的规则:
    			 * 		1.前边可以是xxxx
    			 * 		2.跟着一个@
    			 * 		3.后边可以是xxxx
    			 * 		4..com获取其他的
    			 * 
    			 * 	 正则表达式用于定义一些字符串的规则,
    			 * 		计算机可以根据正则表达式,来检查一个字符串是否符合规则,
    			 * 		获取将字符串中符合规则的内容提取出来
    			 */
    			
    			/*
    			 * 创建正则表达式的对象
    			 * 语法:
    			 * 	var 变量 = new RegExp("正则表达式","匹配模式");
    			 *  使用typeof检查正则对象,会返回object
    			 * 	var reg = new RegExp("a"); 这个正则表达式可以来检查一个字符串中是否含有a
    			 * 在构造函数中可以传递一个匹配模式作为第二个参数,
    			 * 		可以是 
    			 * 			i 忽略大小写 
    			 * 			g 全局匹配模式
    			 */
    			var reg = new RegExp("ab","i");
    			var str = "ab";
    			
    			/*
    			 * 正则表达式的方法:
    			 * 	test()
    			 * 	  使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,
    			 * 	  如果符合则返回true,否则返回false
    			 */
    			var result = reg.test(str);
    			console.log(result);
    			console.log(reg.test("Ac"));
    			
    			/*
    			 * 使用字面量来创建正则表达式
    			 * 	语法:var 变量 = /正则表达式/匹配模式
    			 * 使用字面量的方式创建更加简单
    			 * 	使用构造函数创建更加灵活
    			 * 
    			 */
    			
    			//var reg = new RegExp("a","i");
    			var reg = /a/i;
    			
    			console.log(typeof reg);
    			console.log(reg.test("abc"));
    			
    			//创建一个正则表达式,检查一个字符串中是否有a或b
    			/*
    			 * 使用 | 表示或者的意思
    			 */
    			reg = /a|b|c/;
    			var s = "afd"
    			console.log(reg.test(s))
    			
    			/*
    			 * 创建一个正则表达式检查一个字符串中是否有字母
    			 */
    			//reg = /a|b|c|d|e|f|g/;
    			
    			/*
    			 * []里的内容也是或的关系
    			 * [ab] == a|b
    			 * [a-z] 任意小写字母
    			 * [A-Z] 任意大写字母
    			 * [A-z] 任意字母
    			 * [0-9] 任意数字
    			 */
    			reg = /[A-z]/;
    			
    			//检查一个字符串中是否含有 abc 或 adc 或 aec
    			reg = /a[bde]c/;
    			s = "afc"
    			console.log(reg.test(s))
    			
    			/*
    			 * [^ ] 除了
    			 */
    			reg = /[^ab]/;
    			console.log(reg.test("3232"))
    			reg = /[^0-9]/;
    			console.log(reg.test("abc"))
    			console.log(reg.test("12a3456"));
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    

    二、字符串中与正则表达式相关的方法

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script type="text/javascript">
    			var str = "1a2b3c4d5e6f7";
    			/*
    			 * split()
    			 * 	 可以将一个字符串拆分为一个数组
    			 * 	 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
    			 * 	 这个方法即使不指定全局匹配,也会全都插分
    			 */
    			
    			//根据任意字母来将字符串拆分
    			var result = str.split(/[A-z]/);
    			console.log(result);
    			
    			/*
    			 * search()
    			 * 	 可以搜索字符串中是否含有指定内容
    			 * 	 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
    			 * 	 它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
    			 * 	 serach()只会查找第一个,即使设置全局匹配也没用
    			 */
    			str = "hello abc hello aec afc";
    			// 搜索字符串中是否含有abc 或 aec 或 afc
    			result = str.search(/a[bef]c/);
    			console.log(result);
    			
    			/*
    			 * match()
    			 * 	 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
    			 * 	 默认情况下match只会找到第一个符合要求的内容,找到以后就停止检索
    			 * 	 可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
    			 * 	 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
    			 * 	 match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
    			 */
    			str = "1a2a3a4a5e6f7A8B9C";
    			result = str.match(/[a-z]/ig);
    			console.log(result[2]);
    			
    			/*
    			 * replace()
    			 * 	 可以将字符串中指定内容替换为新的内容
    			 *   参数:
    			 * 		1.被替换的内容,可以接受一个正则表达式作为参数
    			 * 		2.新的内容
    			 *   默认只会替换第一个
    			 */
    			result = str.replace(/[a-z]/gi , "@_@");
    			console.log(result);
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    

    三、练习

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title></title>
    		<script type="text/javascript">
    			var str = prompt("请输出任意的内容:");
    			var arr = str.split("");
    			console.log(arr)
    			arr.reverse();
    			console.log(arr)
    			str = arr.join("");
    			console.log(str)
    			str = str.split("").reverse().join("");
    			console.log(str);
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    

    四、正则表达式

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script type="text/javascript">
    			/*
    			 * 量词
    			 * 	 通过量词可以设置一个内容出现的次数
    			 * 	 量词只对它前边的一个内容起作用
    			 * 	 {n} 正好出现n次
    			 * 	 {m,n} 出现m-n次
    			 * 	 {m,} m次以上
    			 * 	 + 至少一个,相当于{1,}
    			 * 	 * 0个或多个,相当于{0,}
    			 * 	 ? 0个或1个,相当于{0,1}
    			 */
    			// 创建一个正则表达式检查一个字符串中是否含有aaa
    			var reg = /a{3}/;
    			console.log(reg.test("aaa"));
    			
    			// 创建一个正则表达式检查一个字符串中是否含有3个ab
    			reg = /(ab){3}/;
    			console.log(reg.test("ababab"));
    			
    			reg = /b{3}/;
    			console.log(reg.test("bb"));
    			
    			reg = /ab{1,3}c/;
    			console.log(reg.test("abc"));
    			console.log(reg.test("ababc"));
    			
    			reg = /ab{3,}c/;
    			console.log(reg.test("abbc"));
    			console.log(reg.test("abbbbc"));
    			
    			reg = /ab+c/;
    			console.log(reg.test("abc"));
    			
    			reg = /ab*c/;
    			console.log(reg.test("ac"));
    			console.log(reg.test("abbbbc"));
    			
    			reg = /ab?c/;
    			console.log(reg.test("ac"));
    			console.log(reg.test("abc"));
    			console.log(reg.test("abbc"));
    			
    			/*
    			 * 	^ 表示开头
    			 * 	$ 表示结尾
    			 */
    			reg = /^a/; //匹配开头的a
    			reg = /a$/; //匹配结尾的a
    			console.log(reg.test("abcabca"));
    			
    			/*
    			 * 如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式
    			 */
    			reg = /^a$/;
    			console.log(reg.test("aa"));
    			console.log(reg.test("a"));
    			
    			/*
    			 * 创建一个正则表达式,用来检查一个字符串是否是一个合法手机号
    			 * 
    			 * 手机号的规则:
    			 * 	1 3 567890123 (11位)
    			 * 	
    			 * 	1. 以1开头
    			 *  2. 第二位3-9任意数字
    			 * 	3. 三位以后任意数字9个
    			 * 
    			 *  ^1   [3-9]  [0-9]{9}$  
    			 */
    			var phoneStr = "13067890123";
    			var phoneReg = /^1[3-9][0-9]{9}$/;
    			console.log(phoneReg.test("11067890123"));
    			console.log(phoneReg.test(phoneStr));
    			
    			/*
    			 * 检查一个字符串中是否含有 .
    			 * . 表示任意字符
    			 * 在正则表达式中使用作为转义字符
    			 * .  表示.
    			 * \  表示
    			 * 
    			 * 注意:
    			 *  使用构造函数时,由于它的参数是一个字符串,而是字符串中转义字符,
    			 * 	如果要使用则需要使用\来代替
    			 */
    			var reg = /./;
    			console.log(reg);
    			reg = /\/;
    			console.log(reg);
    			reg = new RegExp("\.");
    			console.log(reg);
    			reg = new RegExp("\\");
    			console.log(reg);
    			
    			/*
    			 * w
    			 * 	 任意字母、数字、_  [A-z0-9_]
    			 * W
    			 * 	 除了字母、数字、_  [^A-z0-9_]
    			 * d
    			 * 	 任意的数字 [0-9]
    			 * D
    			 * 	 除了数字 [^0-9]
    			 * s
    			 * 	 空格
    			 * S
    			 * 	 除了空格
    			 * 
    			 * 	 单词边界
    			 * B
    			 * 	 除了单词边界
    			 */
    			
    			reg = /w/;
    			console.log(reg.test("$"));
    			console.log(reg.test("_"));
    			
    			reg = /W/;
    			console.log(reg.test("9"));
    			console.log(reg.test("$"));
    			
    			reg = /d/;
    			console.log(reg.test("a"));
    			console.log(reg.test("9"));
    			
    			reg = /D/;
    			console.log(reg.test("$"));
    			console.log(reg.test("0"));
    			
    			reg = /s/;
    			console.log(reg.test(" "));
    			console.log(reg.test("$"));
    			
    			reg = /S/;
    			console.log(reg.test(" "));
    			console.log(reg.test("$"));
    			
    			// 创建一个正则表达式检查一个字符串中是否含有单词child
    			reg = /child/;
    			console.log(reg.test("hello child "));
    			
    			//去除掉字符串中的前后的空格,去除空格就是使用""来替换空格
    			var str = "              he      llo                ";
    			console.log(str);
    			//去掉字符串中所有的空格
    			str = str.replace(/s/g , "");
    			console.log(str);
    			
    			str = "              he      llo                ";
    			console.log(str);
    			//去除开头的空格
    			str = str.replace(/^s*/, "");
    			console.log(str);
    			
    			str = "              he      llo                ";
    			console.log(str);
    			console.log(str.length);
    			//去除结尾的空格
    			str = str.replace(/s*$/, "");
    			console.log(str);
    			console.log(str.length);
    			// /^s*|s*$/g 匹配开头和结尾的空格
    			str = str.replace(/^s*|s*$/g,"");
    			console.log(str);
    			console.log(str.length);
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    

    五、匹配邮件的正则表达式

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script type="text/javascript">
    			/*
    			 * 电子邮件
    			 * 	hello  .nihao          @     abc  .com.cn
    			 * 
    			 * 任意字母数字下划线    .任意字母数字下划线  @   任意字母数字     .任意字母(2-5位)   .任意字母(2-5位)
    			 * 
    			 * w{3,}  (.w+)*  @  [A-z0-9]+  (.[A-z]{2,5}){1,2}
    			 */	
    			var emailReg = /^w{3,}(.w+)*@[A-z0-9]+(.[A-z]{2,5}){1,2}$/;
    			var email = "abc.hello@163.com";
    			console.log(emailReg.test(email));
    		</script>
    	</head>
    	<body>
    	</body>
    </html>
    
  • 相关阅读:
    基础实验7-2.2 插入排序还是堆排序 (25分)
    进阶实验6-3.1 红色警报 (25分)--并查集
    基础实验3-2.2 单链表分段逆转 (25分)--单链表
    基础实验6-2.2 汉密尔顿回路 (25分)--邻接矩阵
    案例6-1.3 哥尼斯堡的“七桥问题” (25分)--dfs图连通+度判断
    基础实验8-1.1 单身狗 (25分)
    基础实验7-2.3 德才论 (25分)--排序
    基础实验7-2.4 PAT排名汇总 (25分)--结构体排序(快排)
    进阶实验4-3.4 笛卡尔树 (25分)--二叉排序树+堆排序
    基础实验4-2.7 修理牧场 (25分)-堆+哈夫曼树
  • 原文地址:https://www.cnblogs.com/xidian2014/p/11147956.html
Copyright © 2011-2022 走看看