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