我已经制作了一些正则表达式来测试YouTube嵌入式视频:
/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/
它适用于我测试时的预期,但问题是我需要将该正则表达式作为字符串传递给某个函数。特别是我正在使用htmlawed,我将以下字符串传递给函数:
func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")');
问题是上面的正则表达式有效,但它只是忽略斜杠,并接受任何代替它们。
这就是为什么我怀疑转义存在问题。
如果你能提出一些逃避这些斜线和反斜杠的替代方法,我将不胜感激......必须有一些方法吗?
答案 0 :(得分:3)
如果你有一个字符串,你需要转义字符串文字的反斜杠(和引号)。或者,根据函数如何从字符串构建正则表达式,您可能根本不需要转义斜杠(我不这么认为)。
"iframe=-*,src(match=\"/^(http:\\/\\/www\\.youtube\\.com\\/embed\\/)[^\\/\\s\\\\]+$/\")"
答案 1 :(得分:0)
在PHP中,您还可以使用不同的正则表达式分隔符:
~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~