我想使用正则表达式向值 添加一个(变量)标签,该模式适用于 PHP,但我在将其实现到 JavaScript 中时遇到了麻烦。
模式是( value
是变量):
/(?!(?:[^<]+>|[^>]+<\/a>))\b(value)\b/is
我逃脱了反斜杠:
var str = $("#div").html();
var regex = "/(?!(?:[^<]+>|[^>]+<\\/a>))\\b(" + value + ")\\b/is";
$("#div").html(str.replace(regex, "<a href='#" + value +">" + value + "</a>"));
但这似乎不对,我记录了模式及其应该是什么。
有任何想法吗?
原文由 Borstenhorst 发布,翻译遵循 CC BY-SA 4.0 许可协议
要从字符串创建正则表达式,您必须使用 JavaScript 的
RegExp
对象。如果您还想多次匹配/替换,则 必须 添加
g
(全局匹配)标志。这是一个例子:JSFiddle 演示在这里。
在一般情况下,在用作正则表达式之前转义字符串:
但是,并非每个字符串都是有效的正则表达式:有一些特殊字符,例如
(
或[
。要解决此问题,只需在将字符串转换为正则表达式之前将其转义即可。下面的示例中有一个实用函数:JSFiddle 演示在这里。
注意:问题中的正则表达式使用
s
修饰符,该修饰符在提出问题时不存在, 但 确实存在- JavaScript 中的s
( dotall ) 标志/修饰符 - today 。