2014-02-26 120 views
1

我有一個關於preg_match語法中的一個字符的問題。 我只是想完全理解。 \w尋找字母數字字符和下劃線。Preg_match php解釋

我的問題是\\w@之前的含義是什麼?

這是否意味着,它將使:

  1. 任何字母數字
  2. 任何反斜線
  3. 任何破折號

,或者這是反斜線意味着挑出下面的性格嗎?

當我在w3schools.com示例中測試它時,我可以在電子郵件地址中使用反斜槓進行驗證,但當它們被回顯時會被刪除。

$email = test_input($_POST["email"]); 
    // check if e-mail address syntax is valid 
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) 
     { 
     $emailErr = "Invalid email format"; 
     } 
+0

我不認爲你真的需要反斜槓那裏。它通常用於逃避後面的字符。 – putvande

+0

\有逃避字符串。 http://www.php.net/manual/en/regexp.reference.escape.php。你也可以閱讀這個:http://stackoverflow.com/questions/3115150/how-to-escape-regular-expression-special-characters-using-javascript –

+0

謝謝下面的鏈接解釋到底我需要知道逃脫序列¶ 反斜線字符有幾個用途。首先,如果它後面跟着一個非字母數字字符,它將帶走字符可能具有的任何特殊含義。 – Torads

回答

1

反斜槓用於轉義在正則表達式中具有特殊含義的字符以獲取文字字符。有跡象表明,必須進行轉義十二個字符:[ { () . ? * + | \^$

如果我想寫的圖案文字$,我必須寫\$

注意:你不需要逃避{如果情況沒有曖昧(量詞{m,n}{m}

注2:模式的分隔符必須在字符類的內部和外部轉義。

在一個角色類中,這12個角色不需要再逃脫,因爲他們失去了特殊的含義並被視爲文字。但是,如果三個角色在角色類中處於特殊位置,則有三個角色具有特殊含義。這些字符是:^ - ]

^在所述第一位置用於否定字符類([^M] =>所有不在A M)。如果要在「第一個位置」將其用作文字字符,則必須寫入:[\^]

-兩個字符之間定義了一個字符範圍([a-z])。這意味着你不必在開始時(或在^之後立即或在課程結束時)逃避它。你只需要在兩個字符之間轉義它。 -被看作是一個文字(和沒有定義的範圍)在所有這些例子中:

[-abcd] 
[^-abcd] 
[abcd-] 
[ab\-cd] 
[\s-abcd] # because \s is not a character 

],因爲它是用於關閉字符類必須轉義除了在第一位置或立刻後^[]][^]]是正確的。

如果我寫,而不uneeded反斜槓的模式,我得到:

/([\w-][email protected][\w-]+\.[\w-]+)/ 

要回答你的問題(「這是什麼意思?」):沒什麼,uneeded逃逸由正則表達式引擎忽略。