2011-08-29 65 views
1

我想用一個基本的正則表達式來檢查一個字符串是否包含正則表達式只有數字和字母字符,所以我嘗試在PHP中的*

preg_match('[a-zA-Z0-9]*', $address) 

不幸的是返回一個錯誤:

警告:的preg_match()[function.preg匹配]:未知的修飾 '*' 中的線/bla/bla.phpXX

這是一個簡單的正則表達式。我在哪裏弄錯了?

+1

' '/ [A-ZA-Z0-9] * /''就可以了。你確定,你需要'*',而不是'+'?否則'$地址'將通過檢查。 – rmflow

+1

不,這不是他需要的'+',而是'^'和'$'錨。 –

回答

7

該模式應該以模式分隔符開始和結束。可以在分隔符後添加不同的preg選項,如不區分大小寫的搜索。通常斜槓(/)用於分隔符,但可以是任何符號(分隔符應在模式進行轉義):

preg_match('/[a-z0-9]*/i', $address); 

這將檢查如果字符串的數字或字符它。

如果你想確保它具有只有數字和字符,然後使用此:

preg_match('/^[a-z0-9]*$/i', $address); 
+0

編輯:修正了字符範圍('A-Z'匹配除'''','''等字母之外的一些字符)並添加了'i'修飾符。我還添加了錨點,否則驗證將無法正常工作。 –

+0

謝謝!這就像一個魅力:)你能給我一個鏈接到一個教程使用正則表達式與PHP? –

+1

@Martin Marinov http://www.regular-expressions.info/php.html。如果您想了解一般的正則表達式,請訪問他們的主頁。他們擁有所有你需要的信息。 –

0

使用

preg_match('/^[a-zA-Z0-9]*$/', $address) 
+0

「只有數字和字母字符」被「^ $'所掩蓋,顯示的錯誤來自缺少的斜槓(或其他所需的'有效'字符) –

1

我用這個來找到不同的語言,以及所有可能的字母:

preg_match('/^[\p{L}\p{M}0-9]+$/i', $address); 

但如果只是英語則:

preg_match('/^[a-z0-9]+$/i', $address); 
+0

您忘記了'u'修飾符;)(並注意$地址需要用utf-8) – arnaud576875