javascript基础(正则表达式)(二十四)

本文详细介绍正则表达式的创建及应用,包括不同创建方法、常用字符串操作、量词使用技巧、特殊字符处理等,最后通过邮箱验证实例巩固学习。

1.正则表达式简介:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*
			 * 
			 * 	 - 用户在网页上浏览时,往往需要向服务器发送
			 * 		如:用户名 密码 电子邮件 QQ号 手机号。。。
			 * 	 - aaaa.com 
			 * 	 - xxxxx@xxxx.com.cn
			 * 	 - 前边乱七八糟,后边一个@,然后再乱七八糟,然后在点,然后再乱七八糟
			 * 
			 * 正则表达式
			 * 	 - 正则表达式用来定义一规则,计算机可以根据这些规则
			 * 		来判断一个字符串是否符合规则,或者从一个字符串中将符合规则的内容提取出来
			 */
			
			//创建一个正则表达式的对象
			//语法:var 变量 = new RegExp("正则表达式","匹配模式");
			//a这个正则表达式,表示检查一个字符串中是否有a
			//在正则的构造函数中,可以传递一个匹配模式的字符串作为第二个参数
			//g 全局匹配模式     i 忽略大小写匹配
			var reg = new RegExp("abcd","i");
			
			//使用typeof来检查正则,会返回object
			//console.log(typeof reg);
			//创建一个字符串
			var str = "Acb";
			
			/*
			 * 正则表达式中有一个方法 test()
			 * 	他可以用来检查一个字符串是否符合正则表达式的要求
			 * 	如果符合则返回true,否则返回false
			 */
			var result = reg.test(str);
			
			console.log(result);
			
			
		</script>
	</head>
	<body>
	</body>
</html>

2.创建正则表达式方法二:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			//var reg = new RegExp();
			
			/*
			 * 创建正则表达式方式二:
			 * 	
			 * 	var 变量 = /正则表达式/匹配模式;
			 */
			
			var reg = new RegExp("a","i");
			
			reg = /a/i;
			
			//console.log( reg.test("Abc") );
			
			
			//创建一个正则表达式,检查一个字符串中是否含有a或b
			/*
			 * | 表示或者
			 */
			reg = /a|b|c/;
			
			//创建一个正则表达式,表示任意的小写字母
			reg = /a|b|c|d|e|f|h|i|j|k/;
			
			/*
			 * [] 中括号中的内容也表示或
			 * 	[a-z] 任意的小写字母
			 * 	[A-z] 任意字母
			 * 	[0-9] 任意数字
			 * 
			 * [^  ] 表示除了括号中的内容
			 */
			reg = /[abc]/;
			
			reg = /[a-z]/;
			
			reg = /[A-z]/;
			
			reg = /[0-9]/;
			
			//检查一个字符串中是否含有abc 或 adc 或aec
			reg = /abc|adc|aec/;
			
			reg = /a[bde]c/;
			
			//除了小写字母
			reg = /[^a-z]/;
			
			//除了小写字母和数字
			reg = /[^a-z0-9]/;
			
			
			var result = reg.test("babccdef1");
			
			console.log(result);
			
			
		</script>
	</head>
	<body>
	</body>
</html>

3.字符串和正则相关的方法:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * split()
			 * 	- 可以将一个字符串拆分为一个数组
			 * 	- 这个方法中可以传递一个正则表达式作为参数,这样将会根据正则表达式去拆分字符串
			 * 	- split()拆分字符串,无论是否指定全局匹配,都会全都拆
			 */
			
			var str = "a@b@c@d@e";
			
			str = "中abc国adc万aec岁aec!";
			
			var reg = /a[bde]c/;
			
			var result = str.split(reg);
			
			//console.log(result);
			
			/*
			 * search()
			 * 	- 可以用来搜索一个字符串中是否含有指定内容
			 * 	- 如果查询到了,会返回它第一次出现的索引,如果没找到则返回-1
			 * 	- 也可以接收一个正则表达式作为参数,将会根据正则表达式去字符串中查询内容
			 * 	- search()只会匹配第一个,即使加了全局匹配
			 */
			str = "hello abc hello how are you aec";
			
			reg = /a[bde]c/g;
			
			//查询字符串中是否有abc 或 adc 或 aec
			result = str.search(reg);
			
			console.log(result);
			
			/*
			 * match()
			 * 	- 根据正则表达式将字符串中符合要求的内容提取出来
			 * 	- 默认情况match()只会匹配到第一个符合条件的内容,
			 * 		如果需要匹配所有的内容,则需要设置全局匹配模式
			 * 	- match()方法会将匹配到的内容封装到一个数组中返回,
			 * 		即使只匹配到了一个,也会保存到数组中
			 * 	- 匹配模式可以不写,也可以同时写多个,并且顺序不限
			 * 	
			 */
			str = "aBcasdasdadcsdasdaecasdafc";
			
			reg = /a[bdef]c/ig;
			
			result = str.match(reg);
			
			/*
			 * replace()
			 * 	- 可以将字符串的指定内容,替换为新的内容
			 * 	- 参数:
			 * 		第一个,被替换的内容,可以是一个正则表达式
			 * 		第二个,新的内容
			 */
			str = "aBcasdasdadcsdasdaecasdafc";
			
			//将字符串中的a,替换为 孙悟空
			result = str.replace(/a/g,"孙悟空");
			result = str.replace(reg,"孙悟空");
			
			//console.log(result);
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>

4.正则表达式量词:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			//创建一个正则表达式,检查一个字符串中是否含有abc
			var reg = /abc/;
			
			//创建一个正则表达式,检查一个字符串中是否含有bbb
			reg = /b{3}/;
			
			/*
			 * 量词
			 * 	- 量词用来表示一个内容出现的次数
			 * 	- {n} 正好出现n次
			 * 	- {m,n} 出现m-n次
			 * 	- {n,} 至少n次
			 * 	- + 至少出现1次,相当于{1,}
			 * 	- * 0个或多个,相当于{0,}
			 * 	- ? 0个或1个,相当于{0,1}
			 */
			
			//创建一个正则表达式,检查一个字符串中是否有ababab
			reg = /(ab){3}/;
			
			reg = /ab{3}c/;
			
			reg = /ab{1,3}c/;
			
			reg = /ab{3,}c/;
			
			reg = /ab+c/;
			
			reg = /ab*c/;
			
			reg = /ab?c/;
			
			
			var result = reg.test("abbc");
			
			//console.log(result);
			
			/*
			 * ^ 表示开头
			 * $ 表示结尾	
			 */
			
			//创建一个正则表达式,检查一个字符串是否以a开头
			reg = /^a/;
			
			//创建一个正则表达式,检查一个字符串是否以a结尾
			reg = /a$/;
			
			//使用^开头 $结尾的正则表达式,必须字符串和正则表达式完全匹配才会返回true
			reg = /^a$/;
			
			reg = /^a{3}$/;
			
			result = reg.test("aaa");
			
			//console.log(result);
			
			/*
			 * 检查一个字符串是否是一个有效的手机号
			 * 	
			 * 手机号是11位的纯数字
			 * 
			 * 1      3      567890123
			 * 
			 * 以1开头     3-9之间的任意数字      0-9之间的任意数字9个
			 * 
			 * 	^1    [3-9]      [0-9]{9}$ 
			 * 
			 */
			var phoneReg = /^1[3-9][0-9]{9}$/;
			
			var phone = "17567890123";
			
			console.log(phoneReg.test(phone));
			
			
		</script>
	</head>
	<body>
	</body>
</html>

5.正则表达式的其他字符补充:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			var str = "@";
			
			//创建一个正则表达式,检查一个字符串中是否含有.
			var reg = /./;
			
			var result = reg.test(str);
			
			/*
			 * . 在正则中代表任意字符
			 * 
			 * 在正则表达式中,可以使用 \ 作为转义字符
			 * \. 来表示.
			 * \\ 表示\
			 */
			
			str = "abcbcd";
			
			reg = /\./;
			
			//当使用构造函数来创建正则表达式时,由于它的正则是以字符串的形式传递的
			//而\在字符串中也是转义字符串,所以这里需要使用\\来表示一个
			reg = new RegExp("\\.");
			
			str = "abcdefg\\";
			
			reg = /\\/;
			
			reg = new RegExp("\\\\");
			
			
			//console.log(reg);
			
			result = reg.test(str);
			
			//console.log(result);
			
			/*
			 * \w
			 * 		- 相当于[A-z0-9_]
			 * 		- 任意字母数字下划线
			 * \W
			 * 		- 相当于[^A-z0-9_]
			 * 		- 除了字母数字下划线
			 * \d
			 * 		- 任意数字
			 * \D
			 * 		- 除了数字
			 * \s
			 * 		- 空格
			 * \S
			 * 		- 除了空格
			 * \b
			 * 		- 单词边界
			 * \B
			 * 		- 除了单词边界
			 */
			
			reg = /\w/;
			reg = /\W/;
			reg = /\d/;
			reg = /\D/;
			reg = /\s/;
			reg = /\S/;
			
			result = reg.test("abc");
			
			//console.log(result);
			
			//创建一个正则表达式,检查一个字符串中是否含有child这个单词
			reg = /\bchild\b/;
			
			result = reg.test("child hello ");
			
			//console.log(result)
			
			
			//用户通过页面输入一个内容
			var username = prompt("请输入一个用户名:");
			
			/*
			 * 去除字符串中的前后空格
			 * 	实际上就是将字符串中的空格替换为空串
			 */
			console.log(username);
			
			//username = username.replace(/\s/g , "");
			//username = username.replace(/^\s*/ , "");
			username = username.replace(/^\s*|\s*$/g , "");
			
			//console.log(username);
			
			/*
			 	编写电子邮件的正则表达式
			 	
			 */
			
		</script>
	</head>
	<body>
	</body>
</html>


6.邮件的正则表达式实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			
			/*
			 * 
			 * 邮件的正则表达式
			 * 	abc              .hello                      @      abc        .com            .cn
			 * 
			 *  开头 字母 数字 下划线 一位以上      \.任意字母数字下划线 一位以上          @      字母数字一位以上        \.字母(2-5位)           \.字母(2-5位)                     
			 * 
			 * ^\w+    (\.\w+)*    @  [A-z0-9]+  (\.[A-z]{2,5}){1,2}$
			 * 
			 * 
			 * 
			 */
			
			var emailReg = /^\w+(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/;
			
			var email = "hello.hello@abc.com.cn";
			
			console.log(emailReg.test(email));
			
			
		</script>
	</head>
	<body>
		<h1>文字</h1>
		<p></p>
		<a href="#">超链接</a>
		<!--我是一个注释-->
	</body>
</html>









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鸭蛋炒饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值