2

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

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

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

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

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

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

如果您能建议一些替代方法来逃避这些斜杠和反斜杠,我将不胜感激......一定有什么方法吗?

4

2 回答 2

3

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

"iframe=-*,src(match=\"/^(http:\\/\\/www\\.youtube\\.com\\/embed\\/)[^\\/\\s\\\\]+$/\")"
于 2012-08-04T16:40:59.370 回答
0

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

~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~
于 2012-08-04T16:58:15.857 回答