如何在正则表达式中转义斜杠


How to escape slashes in regex?

我做了一些正则表达式来测试YouTube嵌入式视频:

/^(http:'/'/www'.youtube'.com'/embed'/)[^'/'s'']+$/

它在测试它时适用于我的期望,但问题是我需要将该正则表达式作为字符串传递给某个函数。特别是我使用的是htmlawed,我将以下字符串传递给函数:

func('iframe=-*,src(match="/^(http:'/'/www'.youtube'.com'/embed'/)[^'/'s'']+$/")');

问题是上面的正则表达式有点工作,但它只是忽略斜杠,并接受任何代替它们的东西。

这就是为什么我怀疑逃跑有问题。

如果您能建议一些替代方法来摆脱这些斜杠和反斜杠,我将不胜感激......一定有办法吧?

如果你有一个字符串,你需要转义字符串文字的反斜杠(和引号)。或者,根据函数如何从字符串构建正则表达式,您可能根本不需要转义斜杠(我在这里不这么认为)。

"iframe=-*,src(match='"/^(http:''/''/www''.youtube''.com''/embed''/)[^''/''s'''']+$/'")"

在 PHP 中,您还可以使用不同的正则表达式分隔符:

~^(http://www'.youtube'.com/embed/)[^/'s'''']+$~