2014-01-16 17 views
1

我有這個複雜的PHP我複製在線:如何在PHP中運行這個正則表達式?

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 

如何在PHP運行呢?我試試這個:

$test = 'Joe Doe <[email protected]>, [email protected], root, "Bob Smith" <[email protected]>'; 
$regex = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/'; 
print preg_match_all($regex, $test , $matches); 
print_r($matches); 

我試圖逃避它,但複雜性逃避我。

編輯:在線正則表達式測試表明,該正則表達式是正確的,我只是不知道如何得到它到PHP:

http://regexpal.com/?flags=g&regex=%5Ba-z0-9!%23%24%25%26%27*%2B%2F%3D%3F%5E_%60%7B%7C%7D~-%5D%2B(%3F%3A%5C.%5Ba-z0-9!%23%24%25%26%27*%2B%2F%3D%3F%5E_%60%7B%7C%7D~-%5D%2B)*%40(%3F%3A%5Ba-z0-9%5D(%3F%3A%5Ba-z0-9-%5D*%5Ba-z0-9%5D)%3F%5C.)%2B%5Ba-z0-9%5D(%3F%3A%5Ba-z0-9-%5D*%5Ba-z0-9%5D)%3F&input=Joe%20Doe%20%3Cdoe%40example.com%3E%2C%20postmaster%40example.com%2C%20root%2C%20%22Bob%20Smith%22%20%3Cbob%40smith.com%3E 
+1

我會非常謹慎使用,你在網上找到不理解其實際作用的代碼。 –

+0

我完全同意,但這只是一個正則表達式,它的工作原理,你知道,真實的世界時間壓力等。 – Bill

+1

你說「它有效」,但如果你不知道*它如何工作,怎麼做你知道它適用於你需要的所有方法嗎?不要自欺欺人地認爲這只是一個「正則表達式」。 **正則表達式是代碼** –

回答

5

您使用作爲分隔符斜槓/。由於您在表達式中使用/字符,因此您需要使用反斜槓字符將其轉義 - 所以,而不是/,您需要編寫\/

修正的版本是:

$regex = '/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/'; 

Demo

+0

非常好,謝謝阿邁勒。很快就會接受答案。 – Bill

+0

我通常會推薦使用另一個分隔符來保存不必要的分隔符,但是在這種情況下,您的字符串中幾乎包含所有特殊字符! –

+1

@PezCuckow:的確如此。我找不到任何這樣的字符:-) –

0

我使用正則表達式處理工具here。字符串實用程序爲你做這一切。

的Delimeter possiblities:

~ 

'~[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?~' 


/

'/[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/' 


@ 

'@[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*\@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])[email protected]' 


<> 

'<[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?>' 


; 

';[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?;' 


# 

'#[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!\#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?#'