我有
return value.replace("\n","<br>")
.replace("\r","<br>")
.replace("<br><br>","<br>");
仅用
替换了\ n的第一次出现我发现,要替换所有出现的内容,我应该将String
替换为/String/g
所以我做了:
return value.replace("/\n/g","<br>")
.replace("/\r/g","<br>")
.replace("/<br><br>/g","<br>");
但似乎我错过了一些东西,因为什么都没有被替换。
答案 0 :(得分:3)
删除正则表达式周围的双引号:
return value.replace(/\n/g,"<br>")
.replace(/\r/g,"<br>")
.replace(/<br><br>/g,"<br>");
答案 1 :(得分:1)
你应该删除引号。顺便说一下,你可以使用这个单一且简单的正则表达式。
使用此:
return value.replace(/\n|\r|<br><br>/g,"<br>");
答案 2 :(得分:1)
使用文字字符串时,请勿使用引号。这意味着您的代码变为:
return value.replace(/\n/g,"<br>")
.replace(/\r/g,"<br>")
.replace(/<br><br>/g,"<br>");
但是使用正则表达式,你可以通过使用字符类来缩短它。例如,如果value
最初没有任何<br>
,您可以使用:
return value.replace(/[\r\n]+/g, "<br>");
但如果您的初始代码从一开始就有<br>
,那么您可以使用更像这样的内容:
return value.replace(/(?:[\r\n]|<br>)+/g, "<br>");
如果你想保持连续的换行符,也许可以使用明确的量词:
return value.replace(/[\r\n]{2}/g, "<br>");
或
return value.replace(/(?:[\r\n]|<br>){2}/g, "<br>");