建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

Javascript正则表达式详细解释(2)

时间:2009-05-04 23:30来源: 作者: 点击:
正则表达式的方法 1 test方法 返回一个Boolean值,它指出在被查找的字符串中是否存在模式 rgExp.test(str) 全局RegExp对象的属性不由test方法来修改 example1 程序代码 var url= http://msdn.microsoft.com:80/scrip
正则表达式的方法

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)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片