当前位置: 代码迷 >> Web前端 >> exec()、match()与摘引
  详细解决方案

exec()、match()与摘引

热度:687   发布时间:2012-11-22 00:16:41.0
exec()、match()与引用

exec()返回值是一个对象,未匹配返回null。可以通过 pattern.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);
}

match()返回值是一个数组,未匹配返回null。可以通过索引来获取正则表达式中括号内匹配得到的内容。
var url = /(\w+):\/\/([\w.]+)\/(\S*)/;
var text = "Visit my blog at http://www.example.com/~david";
var result = text.match(url);
if (result != null) {
    var fullurl = result[0];   // Contains "http://www.example.com/~david"
    var protocol = result[1];  // Contains "http"
    var host = result[2];      // Contains "www.example.com"
    var path = result[3];      // Contains "~david"
}


正则表达式中, \n 用于引用第n个匹配到的内容。其中n >=1。n 的计算是从左到右,以左括号出现的次序来表示。
例如:
/([Jj]ava([Ss]cri(X|Y)pt)?)\sis\s(fun\w*)/,则([Ss]cript) 匹配到的内容可以用 \2 表示。
又如:/([Jj]ava([Ss]cri(X|Y)pt)?)\sis\s(fun\w*)\3/,则(X|Y)匹配到的内容可以用\3表示。

注意,\n表示的是正则实际匹配到的内容,而不是正则本身。
例如:/['"][^'"]*['"]/ 匹配用单引号或双引号括起来的字符。但是,这里并没有要求单引号或双引号必须配对。
所以字符串 'abc" 是符合的。
如果写成 /(['"])[^'"]*\1/ ,则要求必须单引号或双引号配对出现。
  相关解决方案