2012-08-04 60 views
2

我做了一些正則表達式來測試YouTube的嵌入式視頻:如何在正則表達式中跳出斜槓?

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

它爲我所期望的,當我測試它,但問題是,雖然我需要傳遞的正則表達式作爲一個字符串一些功能。特別是我使用htmlawed,在那裏我通過以下字符串函數:

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

的問題是,上述正則表達式類型的作品,但它只是忽略了斜槓,並接受地方他們任何東西。

這就是爲什麼我懷疑轉義存在問題。

,如果你能指點逃避這些斜線和反斜線的一些替代的方法,我將不勝感激......一定有辦法嗎?

+1

兩條斜槓? ''\\'' – 2012-08-04 16:37:39

+0

這個庫可能需要它自己的轉義;嘗試'\\\ /'。 – Ryan 2012-08-04 16:38:48

+0

哪種語言。哪些代碼?這是一個字符串定義?如果是這樣,它的代碼是什麼?您需要提供實際的源代碼,否則問題不確切,這使得很難回答。 – hakre 2012-08-04 16:41:45

回答

3

如果你有一個字符串,你需要逃避字符串文字反斜槓(和引號)。或者,根據函數如何從字符串構建正則表達式,您可能根本不需要轉義斜槓(我不這麼認爲)。

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

斜槓需要逃脫,否則類似這樣的\/\旁邊的網站名稱將invaliade匹配。我會繼續嘗試以上建議,儘管 – Anonymous 2012-08-04 16:48:47

+0

非常好。上面似乎工作 – Anonymous 2012-08-04 16:57:54

+0

單斜線雖然:''iframe = - *,src(match =「/ ^(http:\\/\\/www \\。youtube \\。com \\/embed \\/)[^ \\/\\小號\\\\] + $ /「)'' – Anonymous 2012-08-04 17:11:20

0

在PHP中,你也可以使用不同的正則表達式的分隔符:

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

是的,這可能是一個好主意,只要我們處理的URL,我會記住它的未來 – Anonymous 2012-08-04 17:06:47

+0

@ Bergi:不需要在PHP正則表達式中加倍反斜槓*,除了需要反斜槓的情況。 – 2012-08-04 17:56:00

+0

我以爲你寫的正則表達式會在OPs字符串裏面 - 因爲你在字符類中加了兩個反斜槓。 – Bergi 2012-08-04 18:13:57