JS正则_匹配字符串(1)

上一篇 / 下一篇  2010-11-22 23:38:59 / 个人分类:正则表达式

*********** 正则表达式对象**************
使用正则表达式匹配一个字符串,需要创建一个正则表达式对象,然后调用相应的方法,完成匹配过程。

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


TAG:

 

评分:0

我来说两句

Open Toolbar