2013-07-07 112 views
0

正規表達式模式我想在我的PHP代碼(的preg_replace)執行正則表達式的操作。現在我工作:反斜線在PHP

|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i 

匹配的URL像http://google.com,等等......但現在我猜如果我想匹配的網址也是這樣嗎?

http:\/\/asd.domain.com\/path\/of\/url\/something.else 

我試着用2x反斜槓和4x反斜槓,它似乎並不工作。

有什麼建議嗎?

在此先感謝。

+1

這當然是不合法的URL,如果它真的包含文字反斜線。 – arkascha

+0

嗯,我把它當作一個字符串來處理,所以沒關係。我想實現與正則表達式是要使它成爲一個有效的URL –

+0

這聞起來像你試圖解決一些小問題,而不是解決的原因。你爲什麼不檢查你期望的語法,然後處理那些乾淨有效的信息?你爲什麼突然得到另一個表示?它通常是「或者」或「! – arkascha

回答

0

好吧,如果你只是想匹配的字符串,添加一些反斜線:

^http(s)?:\\?/\\?/[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(\\?/.*)?$ 

我用了?量詞,以便它仍然可能在此之前,匹配的URL匹配。由於\是一個轉義字符,你需要兩個的,第一個逃跑的第二\的逃逸性。

demo(我才躲過正斜槓因爲正則表達式測試儀是如何工作的有 - 分隔符是斜線)。

+0

爲實際逃避反斜槓反斜槓所需的數量取決於_how_你定義模式字符串,因爲它可能在這個階段得到解釋...... – arkascha

+0

@arkascha權。也許我應該提到雙反斜槓是用於字面正則表達式字符串的。雙逃脫雖然imo ^^太單調乏味, – Jerry