我正在尝试将两个单独的正则表达式查询合并为一个小脚本中的一个默认查询。
第一个查询是
/\[(.*?)\]/g
与这样的短代码匹配
[gallery]
第二个查询是
/\[([^\]]+)]([^\[]+)\[\/([^\]]+)]/g
与这样的短代码匹配
[gallery]data[/gallery]
当我尝试组合查询时,如下所示
/\[(.*?)\]|\[([^\]]+)]([^\[]+)\[\/([^\]]+)]/g
除了扩展短代码中的“数据”之外,所有内容都匹配,如下所示。
[gallery]
[gallery][/gallery]
我期待/想看到的结果是这样的
[gallery]
[gallery]data[/gallery]
最佳答案
只需颠倒模式即可。因为匹配的顺序类似于您首先给出的正则表达式(即 正则表达式出现在 OR |
运算符) 将执行匹配操作,接下来是第二个正则表达式。您将 \[(.*?)\]
作为第一个正则表达式,因此它也匹配第二个正则表达式必须匹配的字符串。颠倒顺序将强制正则表达式引擎首先匹配这样的字符串:[gallery]data[/gallery]
。之后,像 [gallery]
这样的字符串就会被匹配。
\[([^\]]+)]([^\[]+)\[\/([^\]]+)]|\[(.*?)\]
关于JavaScript 正则表达式 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25498580/