如何让JavaScript匹配包含变量并跨越多行的正则表达式?
我试图通过匹配模式从文本体中提取字符串数据,其中我知道正在搜索的字符串的开头和结尾以及我传递给例程的某些字符串。以下行是例程的核心:
var aHits = strIn.match(new RegExp(preStr + "(.+?)" + postStr, ignoreCase + "g"));
// ignoreCase equals "i" or "", preStr is leading string, postStr is trailing
这将很有效,直到可能的匹配包含换行符。然后strIn.match()失败。
我已尝试使用"(.+?)"
,"([\\\s\\\S])"
和"((.|\\\n|\\\r)+?)"
以及其他一些分组策略。
我已经看到一些以#34; s"结尾的文字正则表达式。做这样的事情。变量可以添加到文字正则表达式吗?哪种模式最好,或者至少有效?或者是匹配方法本身拒绝使用换行符处理字符串?我似乎无法在任何地方找到它。
换行符包含在匹配字符串的(.+?)
部分中,但无论如何都会有用吗?
答案 0 :(得分:0)
你几乎就在那里......点元字符并不匹配换行符,但你使用[\\\s\\\S]
走在正确的轨道上......你刚刚逃过太多次。试试这个:
var aHits = strIn.match(
new RegExp(preStr + "([\\s\\S]+?)" + postStr, ignoreCase + "g"));