注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

骇客归来

ぁ枫あ

 
 
 

日志

 
 

javascript中正则表达式的使用  

2007-01-27 14:21:49|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


1,字符串对象中有关正则表达式的方法

search(regExp):
返回与正则表达式查找内容匹配的第一个子字符串的位置,如果参数不是一个正则表达式,则利用RegExp构造函数将器转换为RegExp,如果没有找到返回-1

replace(rgExp, replaceText):
查找替换,如果第一个是字符串的话将作为字符串常量对待,而不是转换为RegExp对象,如果rgExp带有g标志,将替换所有匹配的字符串,否则只替换第一个

在replaceText中以$开头的字符串有特殊的含义,具体含义如下 $1, $2, …, $99
 The text that matched the 1st through 99th parenthesized subexpression within regexp
 
$&
 The substring that matched regexp
 
$`
 The text to the left of the matched substring
 
$’
 The text to the right of the matched substring
 
$$
 A literal dollar sign
 

replacement 参数还可以是一个函数 . In this case, the function is invoked for each match, and the string it returns is used as the replacement text. The first argument to the function is the string that matches the pattern. The next arguments are the strings that match any parenthesized subexpressions within the pattern; there may be zero or more of these arguments. The next argument is an integer that specifies the position within string at which the match occurred, and the final argument to the replacement function is string itself.

match(rgExp):
参数rgExp是一个正则表达式,否则通过RegExp构造函数转换为正则表达式,

当正则表达式没有设置g标志时,如果没有匹配返回null,否则返回一个数组,数组的第一个元素是匹配的整个部分,从第一个开始依次是子表达式(就是正则表达式中的圆括号)匹配的结果,另外返回的数组还有一个index和input属性,index表示匹配结果的第一个字符的索引,input指向用于匹配的字符串本身

当正则表达式设置了g标志时,没有匹配时也是返回null,否则还是返回一个数组,但是含义跟上面的不一样,返回的数组的元素依次是匹配的每个结果,同时也没有input和index属性,也不返回rgExp中子表达式的结果,如果你需要这方面的信息,可以使用RegExp.exec( )

split(separator):
通过separator分割字符串,separator可以是一个字符串或者正则表达式,不提供参数返回包含字符串本身的单元素数组,参数为空字符串时,将字符串分割为单字符的数组

另外这个函数还可以包含另外一个参数,指定返回的数组的最大元素个数

2,正则表达式对象的方法
正则表达式既定义了静态方法也定义了实例方法,不过最好用实例方法,不然使用起来总是混淆,例如使用exec递归匹配的时候,正则表达式定义了两个个方法(exec, test)和五个属性,五个属性如下:

global:Whether the RegExp has the "g" attribute.
ignoreCase:Whether the RegExp has the "i" attribute
lastIndex:The character position of the last match; used for finding multiple matches in a string.
multiline:Whether the RegExp has the "m" attribute.
source:The source text of the regular expression.
exec方法很像字符串中的match方法,没有匹配的时候返回null,否则返回一个数组,但是与match的区别的是,不过正则表达式时候设置了g标志,返回的结果含义都是一样,都是表示匹配的一个结果和它的子表达式匹配的结果

当设置了g标志时,exec可以递归的调用,每次exec调用完后,都设置正则表达式的lastindex属性为下一次匹配开始的位置,如果返回为null的时候,lastindex属性被重新设置为0,入下面的代码

var pattern = /Java/g;
var text = "JavaScript is more fun than Java!";
var result;
while((result = pattern.exec(text)) != null) {
    alert("Matched ‘" + result[0] + "’" +
          " at position " + result.index +
          "; next search begins at " + pattern.lastIndex);
}


不过要特别注意的时,exec方法并不记忆传递给它的字符串,所以使用不同的字符串调用的时候也许会产生混淆,最好等到前面一个字符串完全匹配完(最后一次返回null,lastindex被重置为0)或者自己设置正则表达式的lastindex为0才开始下一个字符串的匹配

正则表达式的另外一个方法是test,当匹配的时候返回true,否则返回false,这个方法除了返回的结果外,行为跟exec一模一样,也可以递归调用,所以也存在exec方法中注意的问题

  评论这张
 
阅读(177)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018