2015-03-24 85 views
-3

我需要一個正則表達式來接受只包含字母和數字字符的字符串。例如:如何使用preg_match僅允許包含字母和數字字符的字符串?

ABCDEF: wrong 
123456: wrong 
!##$%@.: wrong 
[email protected]$: wrong 
ABC12389IKEIIJ29: **correct** 

我該怎麼用PHP做到這一點?

+2

你有沒有嘗試過或做過一些研究? – Rizier123 2015-03-24 23:38:07

+0

是的,但我失敗了,所以我在這裏發佈 – 2015-03-24 23:39:04

+0

前兩行是字母數字字符的示例,但它們都會通過您正在查找的測試。爲什麼? – halfer 2015-03-24 23:39:15

回答

0
preg_match('/^[0-9A-Z]*([0-9][A-Z]|[A-Z][0-9])[0-9A-Z]*$/', $subject); 

如果你要允許小和大寫字母,在模式字符串的結尾添加i

說明:

[0-9][A-Z]一個數字,後面接着一個大寫字母后面跟着一個位

[A-Z][0-9]匹配一個大寫字母匹配

([0-9][A-Z]|[A-Z][0-9])匹配這兩個序列中的一個

[0-9A-Z]*比賽0 -n數字和/或大寫字母

這個想法是:一個包含(且只有),字母和數字的字符串至少有一個子序列,其中一個字母緊跟一個數字或一個數字緊跟一個字母。所有其他字符(前後)必須是數字或字母。

+0

一個很好的答案,但值得注意的是,這裏有些人傾向於在沒有顯示任何努力的情況下提供完整的答案。 – halfer 2015-03-25 08:42:22

相關問題