如何使用正则表达式

时间:2016-08-24 06:41:29

标签: javascript regex google-apps-script

我有一个regex表达式,它返回来自html文件的所有链接,但它有一个问题:它不仅仅返回链接,如http://link.com,它还返回href =“ (href="http://link.com)。如果没有links,我该怎样才能获得href="

这是我的正则表达式:

/href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g

完整代码:

  var source = (body || '').toString();
  var urlArray = [];
  var url;
  var matchArray;

  // Regular expression to find FTP, HTTP(S) URLs.
  var regexToken = /href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g;

  // Iterate through any URLs in the text.
  while( (matchArray = regexToken.exec( source )) !== null )
  {
    var token = matchArray[0];
    token = JSON.stringify(matchArray[0]);
    token = matchArray[0].toString();
    urlArray.push([ token ]);
  }

1 个答案:

答案 0 :(得分:1)

RegExp#exec将存储您的模式中定义的捕获组捕获的所有内容。您可以使用[1]索引访问第1组。

使用

var token = matchArray[1];

另外,我相信你可以将正则表达式简化为

/\bhref="((?:http|ftp)[^"]+)"/g

如果您确定值始终在双引号内。请参阅this demo