如何使用JavaScript Regex提取字符串?

2022-08-30 01:44:29

我正在尝试使用JavaScript Regex从文件中提取子字符串。下面是该文件的切片:

DATE:20091201T220000
SUMMARY:Dad's birthday

我要提取的字段是“摘要”。以下是方法:

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

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

您需要以下更改:

  • 按照上面的建议将括号内侧。否则,匹配组将仅包含一个字符。*

  • 摆脱 和 .使用全局选项,它们在完整字符串的开头和结尾匹配,而不是在行的开头和结尾匹配。改为在显式换行符上匹配。^$

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

  • String.match(正则表达式)应该返回一个包含匹配项的数组。在我的浏览器中,它没有(Mac上的Safari只返回完全匹配,而不是组),但Regexp.exec(string)工作。


答案 2

您需要使用该标志m

多行;将开头和结尾字符(^ 和 $)视为在多行上工作(即,匹配每行的开头或结尾(由 \n 或 \r 分隔),而不仅仅是整个输入字符串的开头或结尾)

也把 放在正确的位置:*

"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match(/^SUMMARY\:(.*)$/gm);
//------------------------------------------------------------------^    ^
//-----------------------------------------------------------------------|