正则表达式和RegExp

正则表达式是由字符串所组成的表达式,用于匹配、替换或者查找特定的字符串。

创建正则表达式的方法:

第一种:

Var  reg = new RegExp(pattern);

第二种:

Var  reg = /pattern/; 

1

var re = /JavaScript rules/; #字符串中的斜杠表示这是一个正则表达式,不是其他对象类型

var str = "JavaScript rules";

if(re.test(str)){

document.writeln("I guess it does rule");

}

正则表达式的匹配过程是匹配大小写的,如果希望不区分大小写进行匹配,可以在正则表达式后面添加字母i

还有一些其他的选项,全局匹配的g标识,全局匹配是查找与正则表达式匹配的所有字符串,而忽略正则表达式的位置。如果不实用选项g,那么只会返回一个匹配项。

多行匹配的m标识,可以使用与行相关的字符,例如^表示一行的开始,$表示一行的结束,以便在多行的字符串中进行匹配。

2

var re = new RegExp("JS*","ig");

var str = "cfdsJS*(YJSjs 888JS";

var resultArray = re.exec(str);

while (resultArray) {

document.writeln(resultArray[0]);

document.writeln("next match starts at " + re.lastIndex + "<br />");

resultArray = re.exec(str);

}

元字符

* 表示0次或多次,c*等同于c{0, }

+ 表示一次或多次,等同于{1}

表示0次或一次,等同于{01

转移字符

\s 空格符

\d 数字

\D 非数字符号

\w 任何数字或字母,等效于[A-Za-z0-9]

\W 任何非数字或字母

方括号[]

表示一个字符集合

比如:[^0-9] 和 \D作用相同都用来匹配非数字字符

脱字符 ^

^$可以用来表示一行的开始和结束。

1

var  regExp = /^The/i;

var  str = This is the JavaScript example:

上面的例子中,因为匹配字符不是出现在行的开始,所以匹配不成功。

2:

var reg = /^The/im;

var str = "This is \nthe end";

这个会匹配成功

竖杠 

表示可选择性的匹配,下面的表达式可以匹配字母ab

a | b

大括号{}

表示字符重复的次数,下面的表达式可以匹配两个s

S{2}

Regexp对象只有两个实例方法:testexec

关于exec( )方法

手册中的解释:

用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组

rgExp.exec(str)

参数

rgExp

必选项。包含正则表达式模式和可用标志的正则表达式对象。

str

必选项。要在其中执行查找的 String 对象或字符串文字。

说明

如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1n元素中包含的是匹配中出现的任意一个子匹配(看下面的例1这相当于没有设置全局标志 (g) 的 match 方法。

如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。

exec 方法返回的数组有三个属性,分别是 inputindex 和 lastIndexInput属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。

使用这个函数来做匹配正则的练习:

function execReg(reg,str){

var result = reg.exec(str);

alert(result);

}

函数接受一个正则表达式参数reg和一个目标字符串参数str,执行之后会alert出正则表达式与字符串的匹配结果

/(子正则表达式1)(子正则表达式2)……/,在第二种建立正则表达式的方法中,斜杠内每个圆括号内便是一个子正则表达式或叫子匹配。

1

reg = /(\w)(\w)/;

str = 'blueidea';

execReg(reg,str);

 

Javascript正则表达式_Javascript

bl是整个正则匹配的内容,b是第一个括号里的子正则表达式匹配的内容,是第二个括号里的子正则表达式的内容

Exec方法的返回值其实并不是匹配结果字符串,而是一个对象,看例2

var reg = /b/;

var  str='bbs.bblueidea.com';

execReg(reg,str);

function  execReg(reg,str){

  var result =  reg.exec(str);

  alert(typeof result);

}

结果为object。即result的类型是object。而且是一个类似数组的对象。这个对象有三个属性:indexinputresult

3

var reg = /(\w)(\w)(.+)/;

var  str='bbs.bblueidea.com';

execReg(reg,str);

function  execReg(reg,str){

  var result =  reg.exec(str);

  document.write('index:'+result.index+'<br  />'+'input:'+result.input+'<br  />' );

  for(i=0;i<result.length;i++){

  document.write('result['+i+']:'+result[i]+'<br  />')

 }

}

结果如下:

index:0
input:bbs.bblueidea.com
result[0]:bbs.bblueidea.com
result[1]:b
result[2]:b
result[3]:s.bblueidea.com