How to extract a string using JavaScript Regex?

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

You need these changes:

  • Put the * inside the parenthesis as
    suggested above. Otherwise your matching
    group will contain only one
    character.

  • Get rid of the ^ and $. With the global option they match on start and end of the full string, rather than on start and end of lines. Match on explicit newlines instead.

  • I suppose you want the matching group (what’s
    inside the parenthesis) rather than
    the full array? arr[0] is
    the full match ("\nSUMMARY:...") and
    the next indexes contain the group
    matches.

  • String.match(regexp) is
    supposed to return an array with the
    matches. In my browser it doesn’t (Safari on Mac returns only the full
    match, not the groups), but
    Regexp.exec(string) works.

Leave a Comment