javascript - 正则表达式替换多个通配符在 PHP 中有效,但在 JavaScript 中无效

标签 javascript php html regex

我正在尝试为两个 Markdown 解析器实现中心对齐:

  1. 使用 PHP 表示 Parsedown (成功)
  2. JavaScript 中,为 Bootstrap Markdown (没有成功)

我遵循并发现最简单的想法是使用最终的 HTML 输出,然后将内联样式捕捉到标签上。

以下正则表达式满足我的需要,它添加了 style="text-align:center;"到目前为止*任何元素*,根据需要:

$text = preg_replace('/\<(.*?)\>\-&gt;(.*?)&lt;\-\<\/(.*?)\>/', '<$1 style="text-align:center;">$2</$3>', $text);

<p>text</p>变成<p style="text-align:center;">text</p> .

但是,当我尝试将其移植到 JavaScript 中以使其可在客户端预览时,该模式与应有的不匹配:

content = content.replace('/\<(.*?)\>\-&gt;(.*?)&lt;\-\<\/(.*?)\>/', '<$1 style="text-align:center;">$2</$3>');

content中的替换不会发生。

我知道 PHP 和 JavaScript 的正则表达式之间存在细微差别,但我已经找到了双方所有预期行为的示例,并且有效。

<小时/>

*如果有人想知道,我还成功地将中心对齐添加到已经具有样式属性的标签 - 到目前为止仅在服务器端。

最佳答案

您需要在 JavaScript 中使用正则表达式的文字语法,如下所示:

content = content.replace(/\<(.*?)\>\-&gt;(.+)&lt;\-\<\/(.+)\>/gi, '<$1 style="text-align:center;">$2</$3>');

请注意,正则表达式末尾的 gi 只是启用全局搜索(即替换与模式匹配的所有匹配项)和不区分大小写的匹配。它们在技术上都是可选的,但您很可能希望启用 g 标志。但是,保留 i 标志由您决定(例如,取决于您的内容是否包含 >)。

关于javascript - 正则表达式替换多个通配符在 PHP 中有效,但在 JavaScript 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27433014/

相关文章:

html - 导航栏元素在台式机和笔记本电脑上呈现奇怪

Javascript 仅在接下来的工作日使用 - 忽略周末

javascript - 将动态嵌套 JSON 解析为 HTML 表

javascript - Html <img src=...> 有效但 JS 图像加载导致 CORS 错误

javascript - Angular 2 有重新渲染优化吗?

php - 使用 XPATH 语法匹配文本

php - 如何从 php 向 Android 发送通知?

javascript - 如何使用 javascript 转义 "innerHtml"属性中的 html?

php - 在 mysql 中用日期重命名输出文件

html - 使用透明度时可以忽略 div 吗?