如何逃避正则表达式中的斜杠?

时间:2012-08-04 16:36:49

标签: php regex

我已经制作了一些正则表达式来测试YouTube嵌入式视频:

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

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

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

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

这就是为什么我怀疑转义存在问题。

如果你能提出一些逃避这些斜线和反斜杠的替代方法,我将不胜感激......必须有一些方法吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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