2017-02-27 87 views
1

我目前正在嘗試驗證註冊表單提交網站的用戶名。爲什麼這個正則表達式捕獲空間?

用戶名的正則表達式是([^a-zA-Z0-9_]{5,25})。我在這個正則表達式中使用PHP的用戶名和preg_match

由於某些原因,空間通過未被發現。我已經嘗試瞭如下的負向預測:(?![a-zA-Z0-9_]{5,25})但仍然沒有看。

有沒有人有任何想法?

+2

所以用戶名不應該有'a-zA-Z0-9_',檢查'^'的位置。驗證你的正則表達式http://www.regexr.com/ – JustOnUnderMillions

+4

你可能的意思是:'^ [a-zA-Z0-9 _] {5,25} $' – anubhava

+0

謝謝你們倆!我的錯。 –

回答

2

A [^...]negated character class,它與類中定義的以外的任何字符相匹配。因此,[^a-zA-Z0-9_]匹配除字母數字或_字符以外的任何字符。

要使用什麼是積極字符類,[a-zA-Z0-9_],或\w(不/u修改,\w相同字符相匹配),也

所以,你可以使用

preg_match('~^\w{5,25}$~', $s) 

或者

preg_match('~\A\w{5,25}\z~', $s) 

\z錨字符串的末尾匹配,而$(不/D改性劑)也可以在一個換行符前匹配( LF)字符。

相關問題