我试图为两个Markdown解析器实现中心对齐:
我关注并发现最简单的想法是使用最终的HTML输出,只需将内嵌样式捕捉到标记上。
以下正则表达式可以满足我的需要,它会根据需要将<{1}}添加到任何元素*中:
style="text-align:center;"
也就是说,$text = preg_replace('/\<(.*?)\>\->(.*?)<\-\<\/(.*?)\>/', '<$1 style="text-align:center;">$2</$3>', $text);
变为<p>text</p>
。
但是,当我尝试将其移植到JavaScript中以使其可用于在客户端进行预览时,该模式与应该不匹配:
<p style="text-align:center;">text</p>
content = content.replace('/\<(.*?)\>\->(.*?)<\-\<\/(.*?)\>/', '<$1 style="text-align:center;">$2</$3>');
中的替换不会发生。
我知道PHP和JavaScript的Regex之间存在细微差别,但我已经找到了双方所有预期行为的示例,正在运作。
*如果有人想知道,我也成功地将中心对齐添加到已经具有样式属性的标签 - 到目前为止仅在服务器端。
答案 0 :(得分:1)
您需要在JavaScript中使用正则表达式的文字语法,如下所示:
content = content.replace(/\<(.*?)\>\->(.+)<\-\<\/(.+)\>/gi, '<$1 style="text-align:center;">$2</$3>');
请注意,正则表达式末尾的gi
只能启用全局搜索(即替换与模式匹配的所有匹配项)和不区分大小写的匹配。它们在技术上都是可选的,但您很可能希望启用g
标志。但是,保留i
标记取决于您(例如,取决于您的内容是否包含>
)。