my multiple string is something like below
###
some content
that I need to match
and might have some special character in it such as | <> []
###
I am trying to get the content of between hashes. I have tried below regex but it is not matching to it and return null.
var regex = /### ((.|\n)*) ###/;
var match= regex.exec(aboveContentAsString);
console.log(match[1]);
JavaScript lacks the s
(singleline/dotall) regex option, but you can workaround it by replacing .
with [\s\S]
(match any character that is a whitespace or that is not a whitespace, which basically means match everything). Also, make your quantifier lazy and get rid of the spaces in the pattern, since there's also no x
(extended) option in JS:
var regex = /###([\s\S]*?)###/;
Example:
var input = "###\nsome content\nthat I need to match\nand might have some special character in it such as | <> []\n###";
var regex = /###([\s\S]*?)###/;
document.getElementById("output").innerText = regex.exec(input)[1];
<pre id="output"></pre>
Your original approach could have worked, but I'd add \r
in there too:
var regex = /###((?:.|[\r\n])*?)###/;
But I prefer the [\s\S]
approach since it's shorter and (IMHO) more readable.