*********** 正则表达式对象**************
使用正则表达式匹配一个字符串,需要创建一个正则表达式对象,然后调用相应的方法,完成匹配过程。
1、JavaScript正则表达式对象:RegExp
(1) 创建对象
方法1: re=/pattern/[flags]
方法2: re= new RegExp("pattern",["flags"])
参数说明:
re :必填,即创建好了的正在表达式对象
pattern:必填,即要使用的正则表达式模式,如: abc*
flags:选填项。标志可以组合使用,可用的有:
g :全文查找出现得所有 pattern
i :忽略大小写
m :多行查找
***********匹配的方法******************
1、exec 方法
用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组
调用方法:
rgExp.exec(str)
参数说明:
rgExp: 必填,正则表达式对象,即前面创建的re;
str:必填,要在其中执行查找的String对象或字符串文字,即要进行匹配的串
返回结果:
1、如果exec方法没有找到匹配,则它返回null
2、如果它找到匹配,则返回一个数组,并更新全局RegExp对象的属性,以反映匹配结果。
返回数组第0个元素是与正则表达式相匹配的文本;第2个元素是与rgExp的第1个子表达式相匹配的文本(如果有的话),第2个元
素是与rgExp第2个子表达式相匹配的文本(如果有的话),以此类推。【由于没弄懂 rgExp子表达式是什么,所有返回的数组没有第1、2
个值】
如果匹配成功,exec()还返回了两个属性:a、index--匹配文本的第一个字符的位置;b、input--配匹配的文本,即str。这两个属性通
过如果方式可以取得:
result.index 、result.input 【注:result变量,其值是exec()的返回数组】
测试代码:
<html> <body> <script. type="text/javascript"> var str = "Visit W3School, W3School is a place to study web technology."; var patt = new RegExp("W3School","g"); var result; result=patt.exec(str); document.write("result[0]: "+result[0]); document.write("<br />"); document.write("result[1] "+result[1]); document.write("<br />"); document.write("input: "+ result.input); document.write("<br />"); document.write("index: "+result.index); document.write("<br />"); document.write("patt.lastIndex: "+patt.lastIndex); document.write("<br />"); </script> </body> </html> |
返回结果:
result[0]: W3School
result[1] undefined
input: Visit W3School, W3School is a place to study web technology.
index: 6
patt.lastIndex: 14
注意:
当rgExp是全局正则表达式时,即定义reExp时,加了g标志。exec()会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这也就是说,可以通过此时可以通过反复调用exec()方法来遍历字符串中的所有匹配文本。当exec()再也找不到匹配文本的内容时,它将返回null,并把lastIndex属性重置为0。
测试代码:
<html> <body> <script. type="text/javascript"> var str = "Visit W3School, W3School is a place to study web technology."; var patt = new RegExp("W3School","g"); var result; while ((result = patt.exec(str)) != null) { document.write(result); document.write("<br />"); document.write(patt.lastIndex); document.write("<br />"); } </script> </body> </html> |
返回结果:
W3School
14
W3School
24
2、test方法
调用方法:
rgExp.test(str)
参数说明:
rgExp: 必填,正则表达式对象,即前面创建的re;
str:必填,要在其中执行查找的String对象或字符串文字,即要进行匹配的串
返回结果:
1、true:str中含有与rgExp匹配的文本
2、false:str中没有与rgExp匹配的文本
测试代码:
<html> <body> <script. type="text/javascript"> var str = "defdasdff"; var patt1 = new RegExp("abc"); var result = patt1.test(str); document.write("Result: " + result); </script> </body> </html>
|
返回结果:
Result: false
如下compile方法,在匹配的过程中不用,但它是正则表达式的一个方法,所以也简单记录一下:
compile 方法
compile方法在不是用于匹配正则表达式的,它的主要作用是:在脚本执行过程中编译正则表达式 或者 正则表达式改变后,进行重新编译。
调用方法:
regExp.compile(regexp,modifier)
参数说明:
regexp:正则表达式对象
modifier:匹配类型,可选有:g-- 全局匹配,i--区分大小写,gi--全局区分大小写
以上参考:
1、http://www.w3school.com.cn/js/jsref_obj_regexp.asp
2、http://blog.sina.com.cn/s/blog_550ffb0b0100adsl.html