1
我目前正在嘗試驗證註冊表單提交網站的用戶名。爲什麼這個正則表達式捕獲空間?
用戶名的正則表達式是([^a-zA-Z0-9_]{5,25})
。我在這個正則表達式中使用PHP的用戶名和preg_match
。
由於某些原因,空間通過未被發現。我已經嘗試瞭如下的負向預測:(?![a-zA-Z0-9_]{5,25})
但仍然沒有看。
有沒有人有任何想法?
我目前正在嘗試驗證註冊表單提交網站的用戶名。爲什麼這個正則表達式捕獲空間?
用戶名的正則表達式是([^a-zA-Z0-9_]{5,25})
。我在這個正則表達式中使用PHP的用戶名和preg_match
。
由於某些原因,空間通過未被發現。我已經嘗試瞭如下的負向預測:(?![a-zA-Z0-9_]{5,25})
但仍然沒有看。
有沒有人有任何想法?
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)字符。
所以用戶名不應該有'a-zA-Z0-9_',檢查'^'的位置。驗證你的正則表達式http://www.regexr.com/ – JustOnUnderMillions
你可能的意思是:'^ [a-zA-Z0-9 _] {5,25} $' – anubhava
謝謝你們倆!我的錯。 –