Javascript笔记整理(四)-----正则

本文详细介绍了JavaScript中的内置对象,如Math、Array、Function等,并深入讲解了正则表达式的创建、直接量字符、字符类、重复、选择、分组、指定匹配位置等特性。此外,还阐述了JavaScript字符串对正则表达式的支持,如search、replace、match和split方法的使用。同时,探讨了RegExp对象的属性和方法,如exec和test。
摘要由CSDN通过智能技术生成

七.js中的内置对象/函数有哪些?

Math(是内置对象,不是内置函数)
Array
Function
Object
Regexp
Date()
Number
Boolean()
String()
.....

八.正则

创建表达式
    1.字面量
		var p=/表达式内容/gi;
	2.构造函数
		new RegExp('表达式内容','gi')

正则表达式

是一个描述字符模式的对象.

1.创建方式
      1) 正则表达式直接量
		 var pattern = /s$/;
      2) RegExp()构造函数
		 var pattern = new RegExp("s$");
2. 直接量字符
	正则表达式中所有字母和数字都是按照字面含义进行匹配的。
	   字符			匹配
	-----------------------
		字母和数字	自身
		\t			制表符
		\n			换行符	
		\v			垂直制表符
		\f			换页符
		\r			回车符
		\xnn		由十六进制数nn指定的拉丁字符  \x0A => \n
		\uxxxx		由十六进制xxxx指定的Unicode字符,例如 \u0009 => \t
		\cX			控制字符 ^X,例如 \cJ 等价于换页符 \n
3. 字符类
	将直接量字符单独放在方括号内就组成了字符类。一个字符类可以匹配它所有包含的任意字符。
	[...]		方括号内的任意字符
	[^...]		不在方括号内的任意字符
    特殊字符类
	.			除换行符和其他Unicode行终止符之外的任意字符
	\w			任何ASCII字符,等价于[a-zA-Z0-9]+_
	\W			任何非ASCII字符组成的,等价于[^a-zA-Z0-9]
	\s			任何Unicode空白符:空格,制表符,回车
	\S			任何非Unicode空白符的字符
	\d			任何ASCII数字,等价于 [0-9]
	\D			任何非ASCII数字之外的任意字符,等价于 [^0-9]
4.  重复     一定要用在子表达式之后
	{n,m}	匹配前一项至少n次,但是不超过m次
	{n,}	匹配前一项n次或者更多次
	{n}		匹配前一项n次
	?		匹配前一项0次或者1次,等价于{0,1}
	+		匹配前一项1次或者多次,等价于{1,}
	*		匹配前一项0次或者多次,等价于{0,}

	例如:
		/[abc]/		匹配"a" "b" "c"中任意一个字符
		/[^abc]/	匹配"a" "b" "c"之外的任意一个字符
		/\d{2,4}/	匹配2~4个数字
		/\w{3}\d?/	匹配三个字符或一个可选的数字
5. 重复方式
	贪婪重复
		匹配重复字符时是尽可能多地匹配
	非贪婪重复	
		在待匹配的字符后跟随一个问号即可: ?? +? *? {1,5}?
	例如:
		/a+/	可以匹配一个或者多个连续的字母a, 当使用"aaa"作为匹配字符串时正则表达式会匹配它的三个字符
		/a+?/	可以匹配一个或者多个连续的字母a, 但是尽可能少地匹配。只能匹配第一个a
6. 选择
	使用字符 "|" 分割供选择的字符。选择项的尝试匹配次序是从左到右,直到发现了匹配项,如果左边的选择项匹配,就忽略右边的匹配项,即使它产生更好的匹配。/ab|cd|ef/ 可以匹配 "ab"或者"cd"或者"ef"
7. 分组
	"()"作用:
	把单独的项组合成子表达式
		以便可以像处理一个单元那样用"|""*""+""?"对单元内的项进行处理
8. 指定匹配位置
	^	匹配字符串的开头,在多行检索中,匹配一行的开头
	$	匹配字符串的结尾,在多行检索中,匹配一行的结尾
	\b	匹配一个单词的边界,即位于字符\w和\W之间的位置,或者位于字符\w和字符串的开头或结尾之间的位置。
	\B	匹配非单词边界的位置
	(?=p)  零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符
	(?!p)  零宽负向先行断言,要求接下来的字符不与p匹配
9. 修饰符
	不是出现在两条斜线之间,而是出现在第二条斜线之后。
	new RegExp("","igm")
		i  说明匹配模式匹配是不区分大小写
		g  说明模式匹配应该是全局的
		m  用以在多行模式中执行匹配。
			/java$/im	可以匹配"java",也可以匹配"java\nis fun"

Javascript中 String对正则表达式的支持

1. search()  
	参数为一个正则表达式。如果参数不为正则表达式,则先通过RegExp将其转换为构造函数。不支持全局检索,返回第一个与之匹配的子串的位置,如果找不到匹配的子串,返回-1。
	"JavaScript".search(/script/i); //返回4
2. replace() 
	用以执行检索和替换操作。第一个参数是正则表达式,第二个参数是要替换的字符串。
	text.replace(/javascript/gi,"JavaScript"); //不区分大小写将所有javascript转换为JavaScript
3. match()   
	最常用的正则表达式方法,参数为正则表达式。返回由匹配结果组成的数组。
	当正则表达式中没有g修饰符的时候,就不是全局匹配。这时,数组的第一个元素就为匹配的字符串,剩余的元素则是由正则表达式中用圆括号括起来的子表达式。如果该正则表达式设置为修饰符g,则该方法返回的数组包含字符串中所有匹配结果。
	"1 plus 2 equals 3".match(/\d+/g) //返回["1","2","3"]

	var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
	var text = "visit my blog at http://www.briup.com/~ee";
	var result = text.match(url);
	if(result!=null){
		var fullurl = result[0];
		var protocol = result[1];
		var host = result[2];
		var path = result[3];
	}
4. split() 
	参数可以为正则表达式
	"1, 2, 3, 4, 5".split(/\s*,\s*/); //["1","2","3","4","5"] 允许分隔符左右两边留有空白

Javascript中RegExp

1. 属性
	source		包含正则表达式文本
	global		布尔值,表明这个正则表达式是否带有修饰符g
	ignoreCase	布尔值,表明这个正则表达式是否带有修饰符i
	multiline		布尔值,表明这个正则表达式是否带有修饰符m
	lastIndex		如果匹配模式带有g,这个属性存储在整个字符串中下一次检索的开始位置,这个属性会被exec(), test()方法调用到
2.方法
	1) exec()	
		与match类似。参数为字符串。对一个指定的字符串执行一个正则表达式在一个字符串中执行匹配检索,如果没有找到任何匹配,返回null,如果找到了匹配,返回一个数组。这个数组元素中的第一个元素包含与正则表达式相匹配的子字符串,剩余的元素是圆括号内的子表达式相匹配的子串。当调用的正则表达式对象具有修饰符g时,它将把当前正则表达式对象的lastIndex属性设置为紧挨着匹配子串的字符位置,当同一个正则表达式第二次调用exec()时,它将从lastIndex属性所指的字符处开始检索。如果没有匹配到任何结果将lastIndex重置为0.

		var pattern = /Java/ig;
		var text = "JavaScript is more fun than java_is good";
		var result;
		while((result = pattern.exec(text))!=null){
			console.log(result[0]+" at "+result.index);
		}
	2) test()	
		参数为字符串。用test()对某个字符串进行检测,如果包含正则表达式的一个匹配结果,返回true.调用test()和调用exec()行为等价,test()会从lastIndex指定位置处开始检索某个字符串,如果它找到了一个匹配结果,立即设置lastIndex为当前匹配字符串的结束位置。

		var pattern = /Java/ig;
		var text = "JavaScript is more fun than java_is good";
		var pattern.test(text); //结果 true
		与test() exec()不同,String方法search() replace() match()并不会用到lastIndex属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值