我正在尝试在Javascript中替换字符串的特殊字符之间的所有内容。
var text = "Hello,\n>> Someone lalalala\nMore Text\n<<";
我尝试过以下代码:
var newText = text.replace(/>>.*<</, ">>Some other text<<");
但最后它实际上返回了文本变量。
我很欣赏这方面的一些想法。感谢。
答案 0 :(得分:3)
正则表达式是&#34;贪婪&#34;,这意味着他们会尝试匹配可能的最长子字符串。由于.*
字面意思是任何字符,因此它也会包含您的分隔符<<
。因此,.*
一直到达字符串的末尾,然后在此之后无法找到<<
,因此匹配将失败。您必须在表达式中将其排除在外:
text.replace(/>>[^<]*<</, ">>Some other text<<");
答案 1 :(得分:0)
问题是&#39;。&#39;与新线不匹配。使用this answer:
var text = "Hello,\n>> Someone lalalala\nMore Text\n<<";
var newText = text.replace(/>>[\s\S]*<</m, ">>Some other text<<");
console.log(newText);
&#13;