regex 如何使用Javascript正则表达式提取字符串





2 Answers

function extractSummary(iCalContent) {
  var rx = /\nSUMMARY:(.*)\n/g;
  var arr = rx.exec(iCalContent);
  return arr[1]; 
}

您需要这些更改:

  • 如上所示将*放在括号内。 否则,您的匹配组将只包含一个字符。

  • 摆脱^$ 。 使用全局选项,它们匹配整个字符串的开始和结尾,而不是行的开始和结束。 相反,显式换行匹配。

  • 我想你想要匹配组(什么是括号内),而不是整个数组? arr[0]是完全匹配( "\nSUMMARY:..." ),下一个索引包含组匹配。

  • String.match(regexp)应该返回一个包含匹配的数组。 在我的浏览器中,它没有(Mac上的Safari只返回完整匹配,而不是组),但是Regexp.exec(字符串)可以工作。

javascript regex icalendar

它可能看起来很明显,但我浪费了太多时间试图让它工作......

我试图从Javascript正则表达式中提取一个子字符串。 这是来自文件的一部分:

DATE:20091201T220000
SUMMARY:Dad's birthday

我想提取的字段是摘要,所以我试图编写一个只返回摘要文本的方法。 这里是方法:

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}

显然,我是一个正则表达式noob :))你能解决它吗? 谢谢




(.*)而不是(.)*将是一个开始。 后者只会捕获线上的最后一个字符。

另外,不需要逃避:




Related