正则表达式的方法
1 test方法
返回一个Boolean值,它指出在被查找的字符串中是否存在模式
rgExp.test(str)
全局RegExp对象的属性不由test方法来修改
example1 程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/; var flag=reg.test(url); flag //返回true RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html"
search和test方法都不能更新全局RegExp对象,所以RegExp.input,RegExp.index,RegExp.lastIndex返回undefined
2 match 方法
使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回
程序代码 stringObj.match(rgExp)
如果match方法没有找到匹配,返回null。如果找到匹配返回一个数组并且更新全局RegExp对象的属性以反映匹配结果。
match方法返回的数组有三个属性:input、index和lastIndex。 Input属性包含整个的被查找的字符串。 Index属性包含了在整个被查找字符串中匹配的子字符串的位置。 LastIndex属性包含了最后一次匹配中最后一个字符的下一个位置。
如果没有设置全局标志(g),数组的0元素包含整个匹配,而第1到n元素包含了匹配中曾出现过的任一个子匹配。 这相当于没有设置全局标志的exec方法。如果设置了全局标志,元素0到n中包含所有匹配
example1(没有设置全局标志)
程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/; var myArray=url.match(reg); RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html" myArray //返回myArray[0]="http://msdn.microsoft.com:80/scripting/default.html", myArray[1]="http",myArray[2]="msdn.microsoft.com", myArray[3]=":80",myArray[4]="/scripting/default.html" myArray.input //返回“http://msdn.microsoft.com:80/scripting/default.html" myArray.index //返回0 myArray.lastIndex //返回51
example2(设置了全局标志) 程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/g; var myArray=url.match(reg); RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html" myArray //返回myArray="http://msdn.microsoft.com:80/scripting/default.html" myArray.input //返回“http://msdn.microsoft.com:80/scripting/default.html" myArray.index //返回0 myArray.lastIndex //返回51
注意设置了全局标志后区别 如果没有设置全局标志(g),数组的0元素包含整个匹配,而第1到n元素包含了匹配中曾出现过的任一个子匹配。 这相当于没有设置全局标志的exec方法。如果设置了全局标志,元素0到n中包含所有匹配
3 exex方法
用正则表达式模式在字符串运行查找,并返回包含该查找结果的一个数组。
程序代码 rgExp.exec(str)
如果exec方法没有找到匹配,则它返回null。 如果它找到匹配,则exec方法返回一个数组,并且更新全局RegExp对象的属性,以反映匹配结果。 数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。 这相当于没有设置全局标志(g)的match方法。
如果为正则表达式设置了全局标志,exec从以lastIndex的值指示的位置开始查找。 如果没有设置全局标志,exec忽略lastIndex的值,从字符串的起始位置开始搜索。
exec方法返回的数组 有三个属性,分别是input、index、lastIndex。 Input属性包含了整个被查找的字符串。 Index属性中包含了整个被查找字符串中被匹配的子字符串的位置。 LastIndex属性中包含了匹配中最后 一个字符的下一个位置。
example1(没有设置全局标志)
程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/; var myArray=reg.exec(url); RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html" myArray //返回myArray[0]="http://msdn.microsoft.com:80/scripting/default.html", myArray[1]="http",myArray[2]="msdn.microsoft.com", myArray[3]=":80",myArray[4]="/scripting/default.html" myArray.input //返回“http://msdn.microsoft.com:80/scripting/default.html" myArray.index //返回0 myArray.lastIndex //返回51
没有设置全局标志(g)时,match方法和exec方法相同 example2(设置全局标志) 程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/; var myArray=reg.exec(url); RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html" myArray //返回myArray[0]="http://msdn.microsoft.com:80/scripting/default.html", myArray[1]="http",myArray[2]="msdn.microsoft.com", myArray[3]=":80",myArray[4]="/scripting/default.html" myArray.input //返回“http://msdn.microsoft.com:80/scripting/default.html" myArray.index //返回0 myArray.lastIndex //返回51
4 search方法
返回与正则表达式查找内容匹配的第一个子字符串的位置。
程序代码 stringOjb.search(rgExp)
search方法指明是否存在相应的匹配 。 如果找到一个匹配,search方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。 如果没有找到匹配,则返回-1。 example1
程序代码 var url="http://msdn.microsoft.com:80/scripting/default.html"; var reg=/(\w+):\/\/([^\/:]+)(:\d*)?([^#]*)/; var flag=url.search(reg); flag //返回0 RegExp.$1 //返回"http" RegExp.$2 //返回"msdn.microsoft.com" RegExp.$3 //返回":80" $egExp.$4 //返回"/scripting/default.html"
search和test方法都不能更新全局RegExp对象,所以RegExp.input,RegExp.index,RegExp.lastIndex返回undefined 5 replace方法
返回根据正则表达式进行文字替换后的字符串的复制
能更新全局RegExp对象
(责任编辑:admin) |