我需要一個正則表達式來接受只包含字母和數字字符的字符串。例如:如何使用preg_match僅允許包含字母和數字字符的字符串?
ABCDEF: wrong
123456: wrong
!##$%@.: wrong
[email protected]$: wrong
ABC12389IKEIIJ29: **correct**
我該怎麼用PHP做到這一點?
我需要一個正則表達式來接受只包含字母和數字字符的字符串。例如:如何使用preg_match僅允許包含字母和數字字符的字符串?
ABCDEF: wrong
123456: wrong
!##$%@.: wrong
[email protected]$: wrong
ABC12389IKEIIJ29: **correct**
我該怎麼用PHP做到這一點?
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數字和/或大寫字母
這個想法是:一個包含(且只有),字母和數字的字符串至少有一個子序列,其中一個字母緊跟一個數字或一個數字緊跟一個字母。所有其他字符(前後)必須是數字或字母。
一個很好的答案,但值得注意的是,這裏有些人傾向於在沒有顯示任何努力的情況下提供完整的答案。 – halfer 2015-03-25 08:42:22
你有沒有嘗試過或做過一些研究? – Rizier123 2015-03-24 23:38:07
是的,但我失敗了,所以我在這裏發佈 – 2015-03-24 23:39:04
前兩行是字母數字字符的示例,但它們都會通過您正在查找的測試。爲什麼? – halfer 2015-03-24 23:39:15