如何正确转换这样的字符串:
html attr = "value" attr2 = 'UnmatchInSubstrings' some \escapedTag content subtag subcontent /subtag br / /html
在:
<html attr = "value" attr2 = 'UnmatchInSubstrings'> some escapedTag content <subtag>subcontent</subtag> <br /> </html>
要求:
- 不匹配子字符串中的标签(“”和“'”中的文本)
- 使用字符\转义您想要作为普通文本的标签。转义标签失去了斜杠。
- 匹配未闭合的标签,例如 br/
我尝试过使用如下的正则表达式,但它不起作用:
/([^\\]\S+[\s[\"|\']+\s\S[\"|\']+]*)+/g
.
为了进行尝试,我使用 regex101.com
预先感谢您,如果不太容易理解,请抱歉:)
最佳答案
要做你想做的事,你需要编写自己的映射器。简而言之,您将拥有一个 keywords
的列表。 ,如html
, table
等,您需要通过它们来匹配您的字符串。
理想情况下,您还应该有一个堆栈,当您找到打开/关闭标签时,您可以在其中推送/弹出关键字。解析器还需要足够智能来排除转义序列以及引号内的字符串,这样您就不会以 "I know <html>"
结束。 .
关于javascript - 使用正则表达式转换 html 文本中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21574625/