JavaScript(2):基础部分之正则表达式

 22.定义正则表达式:

     var varname = /pattern/flags ;

     varname : 变量名

     pattern : 为指定匹配模式的正则表达式

     flags : 0个或多个的可选项,有:

              【1】  i    -------    忽略大小写

              【2】  g   -------    全局匹配,即匹配字符串中出现的所有模式

              【3】  m  -------    进行多行匹配

如:

    var language = /JavaScript/ig ;

    var date = /1994/ ;

 

23.正则表达式对象

    使用构造函数构造函数RegExp()创建正则表达式:

    var varname = new RegExp("pattern" [,"flags"]) ;

    flags:可省略

如:

    var language =  new RegExp("JavaScript","ig") ;

    var date = new RegExp("1994") ;

 

24.RegExp对象的属性

(1)index属性。是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。 
(2)input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。 
(3)lastIndex属性。是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为-1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。 
(4)lastMatch属性。是当前表达式模式的最后一个匹配字符串是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。 ,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。 

(5)lastParen属性。如果表达式模式中有括起来的子匹配,
(6)leftContext属性。是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“'”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。 
(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$'。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。 
(8)$1…$9属性。这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。 

 

25.正则表达式的String方法

match(regex)   :在一个数组中返回与正则表达式regex相匹配的字串 

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>正则表达式的match方法</title>
 6 <script language="javascript">
 7 {
 8   var myMatch = new Array();
 9   var s = "JavaScript is powerful and javaScript is very easy!" ;
10   var regex = /javascript/ig ;//定义正则表达式
11   myMatch = s.match(regex);
12   document.write("最近一次匹配的字符是"+RegExp.input+"<br>");
13   document.write("匹配字串的个数是"+myMatch.length+"<br>");
14   for(var i = 0 ;i<myMatch.length ; i++)
15   {
16      document.write(""+i+"个匹配字串的为:"+myMatch[i]+"<br>");
17   }
18   document.write("最近一次搜索的开始位置为:"+RegExp.index+"<br>");
19   document.write("下次搜索的开始位置为:"+RegExp.lastIndex+"<br>");
20   document.write("最近一次匹配的字符串前面的字串为:"+RegExp.leftContext+"<br>");
21   document.write("最近一次匹配的字符串后面的字串为:"+RegExp.rightContext+"<br>");
22 
23 }
24 </script>
25 </head>
26 <body>
27 </body>
28 </html>

result:

最近一次匹配的字符是JavaScript is powerful and javaScript is very easy!
匹配字串的个数是2
第0个匹配字串的为:JavaScript
第1个匹配字串的为:javaScript
最近一次搜索的开始位置为:undefined
下次搜索的开始位置为:undefined
最近一次匹配的字符串前面的字串为:JavaScript is powerful and 
最近一次匹配的字符串后面的字串为: is very easy!

 

replace(regex,repalcement)    :将字符串中regex只是的子串替换为子串replacement

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>正则表达式String对象replace()方法的使用</title>
 6 <script language="javascript">
 7 {
 8   var beforeString = "JavaScript is power and javaScript is very easy" ;
 9   var regex = /javascript/ig ;//定义正则表达式
10   document.write("替换前的字符串为:"+beforeString+"<br>");
11   var afterString = beforeString.replace(regex,"JAVASCRIPT");
12   document.write("替换前的字符串为:"+afterString+"<br>");
13 }
14 </script>
15 </head>
16 
17 <body>
18 </body>
19 </html>

result:

替换前的字符串为:JavaScript is power and javaScript is very easy
替换前的字符串为:JAVASCRIPT is power and JAVASCRIPT is very easy

 

search(regex)   :查找正则表达式regex只是的模式在字符串中的开始位置

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>正则表达式String对象的search()方法</title>
 6 <script language="javascript">
 7 {
 8   var myString = "JavaScript is power and javaScript is very easy" ;
 9   var regex = /power/ig ;//定义正则表达式
10   var index = myString.search(regex);
11   document.write("在字符串"+myString+"中可以在第"+index+"中找到匹配模式"+regex+"<br>") ;
12 }
13 </script>
14 </head>
15 
16 <body>
17 </body>
18 </html>

result:

在字符串JavaScript is power and javaScript is very easy中可以在第14中找到匹配模式/power/gi

 

split(regex)      :使用正则表达式regex分割字符串,并将分割的结果一数组的形式返回

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>字符串对象split()方法的使用</title>
 6 <script language="javascript">
 7 {
 8   var myArray = new Array();
 9   var s = "javaScript,C,C++,Java,Visual Basic" ;
10   var regex = /,/ ;//定义正则表达式
11   myArray = s.split(regex);//使用split()方法分隔字符
12   document.write("字符分隔的结果为:"+"<br>");
13   for(var i in myArray)
14   {
15      document.write("  "+myArray[i]+"<br>");
16   }
17 }
18 </script>
19 </head>
20 
21 <body>
22 </body>
23 </html>

result:

字符分隔的结果为:
javaScript
C
C++
Java
Visual Basic

 

拓展阅读:

http://www.cnblogs.com/libinqq/archive/2008/07/31/1257699.html

http://www.iteye.com/topic/481228

http://zmingcx.com/javascript-regular-expression-real-classic.html

 

 

 

 

posted @ 2012-09-02 23:46  KeenLeung  阅读(393)  评论(0编辑  收藏  举报