将 RegExp 构造函数转换为与 Safari 兼容
Converting a RegExp constructor to be Safari-compatible
我有这个正则表达式构造的模式,我正在将一个字符串变量传递给它。这在 Chrome 中完美运行,但在 Safari 中不起作用。
有没有办法可以将此代码转换为跨浏览器兼容?谢谢!
(e = e
.split(new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gm"))
.join(n)),
1 == caseinsensitive &&
(e = e.replace(
new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gmi"),
"[$&](" + n + ")"
));
您可以使用
(e = e
.split(new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "g"))
.join(n)),
1 == caseinsensitive &&
(e = e.replace(
new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "gi"),
"[$&](" + n + ")"
));
如果下一个字符是单词字符,(?!\B\w)
否定先行需要单词边界位置。否则,如果下一个字符不是单词字符,则不需要单词边界。
我有这个正则表达式构造的模式,我正在将一个字符串变量传递给它。这在 Chrome 中完美运行,但在 Safari 中不起作用。
有没有办法可以将此代码转换为跨浏览器兼容?谢谢!
(e = e
.split(new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gm"))
.join(n)),
1 == caseinsensitive &&
(e = e.replace(
new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gmi"),
"[$&](" + n + ")"
));
您可以使用
(e = e
.split(new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "g"))
.join(n)),
1 == caseinsensitive &&
(e = e.replace(
new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "gi"),
"[$&](" + n + ")"
));
如果下一个字符是单词字符,(?!\B\w)
否定先行需要单词边界位置。否则,如果下一个字符不是单词字符,则不需要单词边界。