JavaScript正则表达式

本文介绍了JavaScript中的正则表达式使用方法,包括基本语法、特殊字符、字符类、重复字符等,并提供了String对象使用正则表达式的实例及RegExp对象的相关应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Javascript中,使用RegExp类表示正则表达式
正则表达式也可以是直接包含在一对/之间的字符
如:
$:结尾

var pattern /s$/; 

 其等价于:

var pattern=new RegExp(s$); 

 

JavaScript中采用的是perl语言使用正则的语法来匹配字符

常用的直接量字符:

\o NUL字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车



字符类:

\s 空格符 
\S 非Unicode空白符 
[...] 位于括号内的任何字符 
[^...]不在括号内的任何字符 
.  任意字符,除换行 
\w 任何单字字符 相当于[a-zA-Z0-9_] 
\W 任何非单字字符,相当于[^a-zA-Z0-9_] 
\d 任何数字 相当于[0-9] 
\D 任何非数字 相当于[^0-9] 
[\b] 退格 

 

重复字符:

{n,m} 最少n次,最多m次 
{n,}  最少n次,或更多次 
{n}   正好n次 
?     0或者1次 {0,1} 
+     最少1次,或者更多{1,} 
*     0次或多次 等价于{0,} 

 

选择、分组和引用

"|"    来分隔供选择的字符。 
例如:/ab|cd|ef/ 可以匹配ab,或者cd或者ef 
      /\d{3}|[a-z]{4}/ 匹配3个数字和4个字母 
"()"   来组合子表达式 
例如:/java(script)?/ 可以匹配java但是后面也可以跟script 

       可以用来在表达式后部分引用前面的子表达式。 
例如:/([Jj]ava([Ss]cript)?)\sis\S(fun\w*)/ 
其中[Ss]cript 被指定为/2 (以左边括号为准) 
        例如: 
要求开始和结束的引号想匹配 
/['"][^'"]*['"]/ 可以写成 
/(['"])[^'"]*\1/   /1匹配的是第一个带括号的子表达式 

 

分组,引用字符

|  选择,匹配该符号左边的子表达式或者右边子表达式 
(...) 组合,将几个项目组成一个单元,单元可以由*,+,?和|等符号使用 
(?:...) 只组合.把项目组合到一个单元,但是不记忆与该组匹配的字符 
\n      和第n个分组第一次匹配的字符相匹配。组是括号中表达式 
组号是从左到右计数的左括号数。以(?:分组的不编码,无法访问 

 
锚字符:

^ 字符串开头,多行检索,匹配一行的开头 
$ 字符串结尾,多行检索中,匹配一行的结尾 
\b 匹配词语边界, 
\B 匹配非词语边界的位置 

 

标志:

和其他正则表达式语法不同,标志是在"/"符号之外说明的,既它们不出现在两个斜杠之间,位于第二个斜杠后面. 
如 i :匹配不区分大小写  g :匹配应该是全局的,找出所有的匹配 
/\bjava\b/gi  ----->查找一个字符串中找到所有出现的"java" 
   m :以多行模式匹配 /Java$/mi  --->匹配 "java" 和 "Java\nisfun" 

 
String对象使用正则表达式:
String类支持4种方法用正则表达式:


1.search():
        以正则为参数,返回第一个匹配的开始字符位置,否则返回-1
        例如:
       "Javascript".search(/script/i);  ----->返回4


2.replace(): 
        传入正则参数与要修改成的字符串
        例如: 将所有"javascript"统一为"JavaScript"
       text.replace(/javascript/gi,"JavaScript");


3.match():
        传入正则表达式,返回匹配的数组
        例如:  "1 plus 2 equals 3".match(/\d+/g);   --->返回["1","2","3"]


解析URL:

<script language="JavaScript">
			//[a-zA-Z0-9]一个或者多个 "://"  [a-zA-Z0-9]一个或多个 "/" 非空白符0或多个
			 var url=/(\w+):\/\/([\w.]+)\/(\S*)/;
			var text="Visit my blog at http://www.example.com/~david";
			var result=text.match(url);
			if(result!=null){
				var fullurl=result[0]; //-->http://www.example.com/~david
				var protocol=result[1]; //-->http
				var host=result[2];	//-->www. example.com
				var path=result[3];	//--->~david
				alert("fullurl="+fullurl+",protocol="+protocol+",host="+host+",path="+path);
			}
		</script>	


RegExp对象:表达正则表达式的对象;
        提供几种方法创建正则表达式:
        1.=new RegExp() ,传入正则
        2.=new RegExp(,) 传正则和模式组合,如 mi,gi等 =new RegExp("\\d{5}","mi");

RegExp模式匹配方法:
        1.exec():
                 未匹配,返回null,找到,则返回一个数组
                 例如: 
               

 var pattern=/Java/g; 
var text="JavaScript is more fun than Java"; 
var result; 
alert(pattern.exec(text)); 
while((result=pattern.exec(text))!=null){ 
alert("匹配上"+result[0]+" ' 在位置"+result.index+" 上,下次匹配从 "+pattern.lastIndex+"开始"); 
} 

         2.test():传入正则; 
               

var pattern=/java/i; 
 pattern.test("JavaScript"); //returns true; 

 

RegExp都有五个属性:
1.source :只读字符串,存放正则表达式文本
2.global :只读布尔型,是否有标志g
3.ignoreCase :只读布尔型,是否有标志i
4.multiline :只读布尔型,是否有标志m
5.lastIndex :可读写整数,对于有g标志模式来说,存储字符串下一次开始检索的位置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值