最近在重写博客的模板系统,然后就给写爆了,还找不到原因,这里是 html 部分:
https://pastebin.com/YJyu6QZx
我想获得{(PostContent)}和{(PostContentEnd)}之间的内容,首先用了不动脑子的 split 方法,结果截到 html 中的"2019-06-09 这个地方就停了,顿时就惊讶了,改模板系统之前没出过这种问题。随后我换成了正则匹配:
xxx.match(/\{\(PostContent\)\}(.*?){\(PostContentEnd\)\}/)
然而 match 出来的还是到 2019-06-09 这里就没了...
因为要实现压缩,发布博文时我替换段落的所有空格、换行符等为{{s}},{{rn}},{{n}},我想着可能是这个影响了。随后用没有这种替换符的去匹配就成功了...
但是按理来说这一类字符不会对正则造成影响吧,为何截到 06-09 这里就停了...有什么处理方法?
1
ochatokori 2020-02-21 00:05:34 +08:00 via Android
没仔细看你的题目
会不会是正则没有加 g /xxx/g |
2
SomeBottle OP @ochatokori #1 加 g 的话好似没法匹配,主要问题是匹配了,但是匹配出来的东西少了一小节
|
3
ochatokori 2020-02-21 00:13:40 +08:00 via Android
|
4
ochatokori 2020-02-21 00:19:25 +08:00 via Android
|
5
SomeBottle OP |
6
sneezry 2020-02-21 01:48:30 +08:00 1
你的 HTML 里这样写:
<div{{s}}class="info"> 那么它就不是 div 标签了,它也无法和</div>配对。 浏览器认为你这个 HTML 写错了,自动帮你重新构造了 XML 树,你通过审查元素就能看到: https://image.sneezry.com/cauici3e4k5w.png 你把 document.getElementsByTagName('html')[0].innerHTML 输出到控制台,看看浏览器帮你改成什么样了。 |
7
SomeBottle OP @sneezry #6 感谢提示,我用转义解决了^_^
|