[英]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.