var str = "Visit W3School, W3School is a place to stud5y web techno2lo1gy."; 
var patt = /\d+/g;
var str_result=str.match(patt);
var result=patt.exec(str);

上面的代码是一段简单的字符串和正则表达式匹配的代码;(当正则表达式有g标志的情况下)

第一种方法是用了String类里的match方法,用正则表达式当参数;

在chrome里监控这个str_result变量,他会返回一个数组,数组的每个元素分别是一个数字

如图:

 

 也就是说,它会返回所有的和正则表达式匹配的字符串,每个放在一个数组元素中,数组的长度也就是陪配的总个数。

 

第二种方法是用了RegExp中的exec方法,用需要匹配字符串当参数

在chrome里监控这个result变量,他也会返回一个数组,当没有对正则式进行分组(其实就是带括号())的时候,他只返回一个只有一个元素的数组

如果将第二行代码修改为 (这种情况下视为分组)

  var patt = /(\d+)/g;

那么监控的结果为

它返回了一个有两个元素的数组,因为括号中的/d是它的子表达式。依据exec函数在w3中的解释的解释,它会返回所有的子表达式的匹配(没有子表达式则不反回);

属性说明

这里的index属性是检索到的字符串的初始的位置,input的属性是要匹配的完整的字符串,也就是作为函数参数的字符串的值;

还有一个lastIndex属性也是十分关键的,但是在监视窗口没有给出。每次开始检索的时候都是从lastIndex的位置开始检索,初始值为0;

所以一般使用while循环来实现检索到所有的匹配项,以判断result是否为空来判断循环是否需要继续;

若将代码修改成这样:

var str = "Visit W3School, W3School is a place to stud5y web techno2lo1gy."; 
var patt = /\d+/g;
while ((result = patt.exec(str)) != null)  {
  document.write(result);
  document.write("<br />");
 }

则显示结果为

 

 posted on 2018-09-04 09:53  Muic  阅读(438)  评论(0编辑  收藏  举报