正则表达式知识整理(JavaScript)

正则表达式知识整理(JavaScript)


资料书:《JavaScript+jQuery交互式Web前端开发》黑马程序员编著

编程软件:Dreamweaver 


文中有错的地方请及时提醒,谢谢!


效果图:

代码分享:

html和js代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>正则表达式</title>
<link rel="stylesheet" href="regExp.css" type="text/css" />
</head>
	<p style="text-align: center;font-size: 16px;font-weight: bold;">正则表达式</p>
	<hr size="2px" color="blue" />
	<ul><li>认识正则表达式</li></ul>
	<p class="one1">
		<span class="one2">正则表达式的定义及特点:</span>
		定义:正则表达式(Regular Expression,RegExp)是一种描述字符串结构的语法规则,是用于匹配字符串中字符组合的模式,同时正则表达式也是对象。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。此外,正则表达式还常用于过滤掉页面
		内容中的一些敏感词,或从字符串中获取想要的特定部分等。
		
		特点:正则表达式的灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制。对于刚接触的人来说,正则表达式还是比较晦涩难懂的。在实际开发中,一般都是直接复制写好的正则表达式使用,但有些时候也需要根据实际情况
		编写或修改正则表达式。
		
		<span class="one2">正则表达式的使用:</span>在JavaScript中,使用正则表达式之前,需要创建正则对象。创建正则表达式的方式有两种,一种是用字面量方式创建,另一种是通过RegExp()构造函数的方式创建。
		
		字面量:var 变量名=/表达式/;构造函数:var 变量名=new RegExp(/表达式/)或者var 变量名=RegExp(/表达式);其中,表达式是由元字符和文本字符组成的正则表达式模式文本。元字符是具有特殊含义的字符,如"^"、"."或"*"等;
		文本字符就是普通的文本,如字母和数字等。
		
		test()方法可以用来检测字符串是否符合正则规则,符合返回true,否则返回false,其参数是测试字符串。
		
		<span class="one2">模式修饰符:</span>正则表达式提供了模式修饰符可供开发者进行选择,语法:/表达式/[switch],其中,switch表示模式修饰符,是可选的,用于进一步对正则表达式进行设置。其中,模式修饰符还可以多个组合在一起使用。
		<p style="text-align: center">模式修饰符</p>
		<table align="center">
			<tr bgcolor="#C0C0C0">
				<th>模式符</th>
				<th>说明</th>
			</tr>
			<tr>
				<td>g</td>
				<td>用于在目标字符串中实现全局匹配</td>
			</tr>
			<tr>
				<td>i</td>
				<td>忽略大小写</td>
			</tr>
			<tr>
				<td>m</td>
				<td>实现多行匹配</td>
			</tr>
			<tr>
				<td>u</td>
				<td>以Unicode编码执行正则表达式</td>
			</tr>
			<tr>
				<td>y</td>
				<td>黏性匹配,仅匹配目标字符串中此正则表示式的lastIndex属性指示的索引</td>
			</tr>
		</table>
	</p>
	<ul><li>正则表达式中的特殊字符:一个正则表达式可以由简单的字符构成,如/abc/,也可以是简单和特殊字符的组合,如/ab*c/。其中,特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如"^"、"$"、或"*"等。</li></ul>
	<p class="one1">
		<span class="one2">边界符和预定义类:</span>正则表达式中的边界符(位置符)用来提示字符所处的位置。当"^"和"$"同时出现时,表示精准匹配,必须匹配表达式中的字符串才符合规范。
		^:表示匹配行首的文本
		$:表示匹配行尾的文本
		
		预定义类:指的是某些常见模式的简写方式。JavaScript中给出的字符类别可以很容易地完成某些正则匹配。
		转义字符:在正则表达式中可以使用"\"转义特殊字符。此外,选择符"|"可以理解为"或",经常用于查找的条件有多个时,只要其中一个条件满足即可成立的情况。由于在JavaScript中的字符串存在转义问题,因此代码中的"\\"表示反斜线"\"。
		<p style="text-align: center">预定义符</p>
		<table align="center">
			<tr bgcolor="#C0C0C0">
				<th>字符</th>
				<th>含义</th>
			</tr>
			<tr>
				<td>.</td>
				<td>匹配除"\n"外的任何单个字符</td>
			</tr>
			<tr>
				<td>\d</td>
				<td>匹配所有0~9之间的任意一个数字,相当于[0~9]</td>
			</tr>
			<tr>
				<td>\D</td>
				<td>匹配所有0~9以外的字符,相当于[^0~9]</td>
			</tr>
			<tr>
				<td>\w</td>
				<td>匹配任意的字母、数字和下划线,相当于[a-zA-Z0-9]</td>
			</tr>
			<tr>
				<td>\W</td>
				<td>除所有字母、数字和下划线以外的字符,相当于[^a-zA-Z0-9]</td>
			</tr>
			<tr>
				<td>\s</td>
				<td>匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f]</td>
			</tr>
			<tr>
				<td>\S</td>
				<td>匹配非空格的字符,相当于[^\t\r\n\v\f]</td>
			</tr>
			<tr>
				<td>\f</td>
				<td>匹配一个换页符(form-feed)</td>
			</tr>
			<tr>
				<td>\b</td>
				<td>匹配单词分界符。如"\bg"可以匹配"best grade",结果为"g"</td>
			</tr>
			<tr>
				<td>\B</td>
				<td>非单词分界符。如"\Bade"可以匹配"best grade",结果为"abc"</td>
			</tr>
			<tr>
				<td>\t</td>
				<td>匹配一个水平制表符(tab)</td>
			</tr>
			<tr>
				<td>\n</td>
				<td>匹配一个换行符(linefeed)</td>
			</tr>
			<tr>
				<td>\xhh</td>
				<td>匹配ISO-8859-1值为hh(2个16进制数字)的字符,如"\x61"表示"a"</td>
			</tr>
			<tr>
				<td>\r</td>
				<td>匹配一个回车符(carriage return)</td>
			</tr>
			<tr>
				<td>\v</td>
				<td>匹配一个垂直制表符(vertical tab)</td>
			</tr>
			<tr>
				<td>\uhhhh</td>
				<td>匹配Unicode值为hhhh(4个16进制数字)的字符,如"\u597d"表示"好"</td>
			</tr>
		</table>
	</p>
	<p class="one1">
		<span class="one2">字符类和取反符</span>
		字符类:字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项。正则表达式中的"[]"可以实现一个字符集合,只要求匹配其中的一项,所有可供选择的字符都放在方括号内。在开发中,如果允许用户输入英文字母(不区分大小写)、
		数字、连字符"-"、下划线"_"时,则可以使用var rg=/^[a-zA-Z0-9_-]$/;需要注意的是,连字符"-"在通话情况下指标是一个普通字符,只有在表示字符范围时才作为元字符来使用。
		
		取反符:当中括号中"[]"与元字符"^"一起使用时,称为取反符,表示匹配不在指定字符范围内的字符。
		<p style="text-align: center">字符范围示例</p>
		<table align="center">
			<tr bgcolor="#C0C0C0">
				<th>pattern(模式)</th>
				<th>说明</th>
			</tr>
			<tr>
				<td>[cat]</td>
				<td>匹配字符集合中的任意一个字符c、a、t</td>
			</tr>
			<tr>
				<td>[^cat]</td>
				<td>匹配除c、a、t以外的字符</td>
			</tr>
			<tr>
				<td>[A-Z]</td>
				<td>匹配字母A-Z范围内的字符</td>
			</tr>
			<tr>
				<td>[^a-z]</td>
				<td>匹配字母a-z范围外的字符</td>
			</tr>
			<tr>
				<td>[a-zA-Z0-9]</td>
				<td>匹配大小写字母和0-9范围内的字符</td>
			</tr>
			<tr>
				<td>[\u4e00-\u9fa5]</td>
				<td>匹配任意一个中文字符</td>
			</tr>
		</table>
	</p>
	<ul><li>量词符与括号字符</li></ul>
	<p class="one1">
		<span class="one2">量词符和括号字符</span>
		量词符:用来设定某个模式出现的次数,通过使用量词符(?、+、*、{})能够完成某个字符连续出现的匹配。
		
		括号字符:在正则表达式中,中括号"[]"表示字符集合,匹配中括号里的任意字符;大括号"{}"表示量词符,能够完成某个字符连续出现的匹配;小括号"()"表示优先级,被括起来的内容称为"子表达式"。小括号有多种作用,这里只介绍两种,
		1、改变限定符的范围,catch|er可匹配catch和er,而cat(ch|er)可匹配catch和cater。2、分组,当小括号后有量词符时,就表示对整个组进行操作。abc{2}可匹配abcc,a(bc){2}可匹配abcbc。
		<p style="text-align: center">量词符</p>
		<table align="center">
			<tr bgcolor="#C0C0C0">
				<th>字符</th>
				<th>说明</th>
				<th>示例</th>
				<th>结果</th>
			</tr>
			<tr>
				<td>?</td>
				<td>匹配?前面的字符零次或一次</td>
				<td>hi?t</td>
				<td>可匹配ht和hit</td>
			</tr>
			<tr>
				<td>+</td>
				<td>匹配+前面的字符一次或多次</td>
				<td>bre+ad</td>
				<td>可匹配范围从bread到bre...ad</td>
			</tr>
			<tr>
				<td>*</td>
				<td>匹配*前面的字符零次或多次</td>
				<td>ro*se</td>
				<td>可匹配范围从rse到ro..se</td>
			</tr>
			<tr>
				<td>{n}</td>
				<td>匹配{}前面的字符n次</td>
				<td>hit{2}er</td>
				<td>只能匹配到hitter</td>
			</tr>
			<tr>
				<td>{n.}</td>
				<td>匹配{}前面的字符最少n次</td>
				<td>hit{2,}er</td>
				<td>可匹配范围从hitter到hitt...er</td>
			</tr>
			<tr>
				<td>{n,m}</td>
				<td>匹配{}前面的字符最少n次,最多m次</td>
				<td>fe{0,2}l</td>
				<td>可匹配fl、fel和feel三种情况</td>
			</tr>
		</table>
	</p>
	<p class="one1">
		<span class="one2">正则表达式优先级:</span>正则表达式中的特殊符号有很多,在实际应用时,各种特殊符号会遵循优先级顺序进行匹配。
		<p style="text-align: center">正则表达式优先级</p>
		<table align="center">
			<tr bgcolor="#C0C0C0">
				<th>符号</th>
				<th>说明</th>
			</tr>
			<tr>
				<td>\</td>
				<td>转义符</td>
			</tr>
			<tr>
				<td>()、(?:)、(?=)、[]</td>
				<td>圆括号和中括号</td>
			</tr>
			<tr>
				<td>*、+、?、{n}、{n,}、{n,m}</td>
				<td>限定符</td>
			</tr>
			<tr>
				<td>^、$、\任何元字符、任何字符</td>
				<td>定位点和序列</td>
			</tr>
			<tr>
				<td>|</td>
				<td>"或"操作</td>
			</tr>
		</table>
	</p>
	<ul><li>String类中的方法:在处理程序或者网页时,经常需要根据正则匹配模式完成对指定字符串的搜索、匹配和替换。String类中的match()、search()、split()方法都可以使用正则表达式进行字符串处理。</li></ul>
	<p class="one1">
		<span class="one2">match(RegExp)方法:</span>String类中的match()方法除了可在字符串内检索指定的值外,还可以在目标字符串中根据正则匹配出所有符合要求的内容,匹配成功后将其保存到数组中,失败返回false。
		
		<span class="one2">search(RegExp)方法:</span>可以返回指定模式的子串在字符串首次出现的位置,相对于indexOf()方法来说功能更强大。search()方法匹配失败后的返回值为-1。
		
		<span class="one2">split(RegExp[,分割次数])方法:</span>用于根据指定的分隔符将一个字符串分割成字符串数组,其分割后的字符串数组中不包括分隔符。分割符不只一个时,需要定义正则对象才能够完成字符串的分割操作。返回值是以数组形式保存的分割后的结果。当字符串
		为空时,split()方法返回的是一个包含一个空字符串的数组"[""]",如果字符串和分隔符都是空字符串,则返回一个空数组"[]"。当指定字符串分割次数后,若指定的次数小于实际字符串中符合规则分割的次数,则最后的返回结果中会忽略其他的分割结果。
		
		<span class="one2">replace(RegExp[,参数2])方法:</span>用于替换字符串,参数2表示替换的部分。方法的返回值是替换后的新字符串,并不会修改原字符串的内容。
		
	</p>
	<hr size="2px" color="blue" />
	<p style="text-align: center;font-size: 16px;font-weight: bold;">未完待续...</p>
<body>
</body>
</html>

css代码:

@charset "utf-8";
/* CSS Document */

.one1 {
	white-space: pre;
	margin-top:-20px;
	margin-bottom:-20px;
}

.one2 {
	color: red;
	font-style: italic;
	font-weight: bold;
}

table{
	border: 1px solid #6B3435;
	border-collapse: collapse;
}
th,td{border: 1px solid #6B3435;white-space: pre;}

.beforeImg:before {
	content: url("arrow.jpg");
}

.beforeImg {
	text-indent: 8em;
	white-space: pre;
}

未完待续,敬请期待...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值