Home > Enterprise >  Javascript regex to match a block of code starting with a given pattern
Javascript regex to match a block of code starting with a given pattern

Time:09-26

So I'm working with a javascript script and I need a quick way to match "JSDocs" using Regex. The pattern I'm trying to match is this.

# this is block1
/// text
/// text
/// text
/// text

# this is block2
/// text
/// text
/// text
/// text

so a block is defined by consecutive lines starting with "///" what I have so far is:

/(/^(\/{3}[\w\W]*)^(?!\/{3})/gm

so I'm starting at a line starting with /// and then matching until a line doesn't start with /// but for this to work I need to have two \n\n at the end of the input block and I don't want that.

CodePudding user response:

You can use

const result = text.match(/^\/{3}.*(?:\r?\n\/{3}.*)*/gm)

See the regex demo. Note the g and m flags. g will match all occurrences of the pattern in the string and m will make ^ match start of any line.

Details:

  • ^ - start of a line
  • \/{3} - three slashes
  • .* - the rest of the line
  • (?:\r?\n\/{3}.*)* - zero or more sequences of a line ending (CRLF or LF) and the rest of the line.

See the JavaScipt demo:

const text = '# this is block1\n/// text\n/// text\n/// text\n/// text\n\n# this is block2\n/// text\n/// text\n/// text\n/// text';
const result = text.match(/^\/{3}.*(?:\r?\n\/{3}.*)*/gm)
console.log(result);

  • Related