繁体   English   中英

让正则表达式在内容中找到带有换行符的标签内的文本 - JavaScript

[英]Make regex find a text inside tags with line breaks in the content - JavaScript

谢谢你来到这里,所以我有这个小代码:

while(/\[del\](.*?)\[\/del\]/i.exec(text) != null)
text = text.replace(/\[del\](.*?)\[\/del\]/i, "<s>$1</s>");

但是当有换行符时,它就不会匹配。 例:

[删除] asdsadasda
asdadsadsadsadasdsadsa [/ del] - 这将不匹配

我对正则表达式真的很新,所以我做错了什么?

默认情况下,在许多正则表达式中,点与换行符不匹配。 Javascript没有单行修饰符(?s)来改变这种行为。 匹配所有字符(包括换行符)的最新技巧是使用匹配所有空白字符的 [\\s\\S] 以及所有不是空白字符的字符

作为旁注,您不需要将replace方法放在while循环中,因为replace只会在找到某些内容时执行替换。 如果要替换所有出现,只需在模式的末尾添加g命令。

text = text.replace(/\[del\]([\s\S]*?)\[\/del\]/ig, "<s>$1</s>");

请注意,对于此特定替换,由于您的del标记似乎没有参数,您可以简单地写:

text = text.replace(/\[(\/?)del\]/ig, "<$1s>");

(它避免了很多工作)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM