2011-08-11 102 views
0

當我嘗試驗證用戶名時,收到此錯誤消息以下pregexp字符串是:^([a-zA-Z])[a-zA-Z_-]*[\w_-]*[\S]$|^([a-zA-Z])[0-9_-]*[\S]$|^[a-zA-Z]*[\S]$^。想不到的,但沒有任何工程警告:preg_match()[function.preg-match]:未知修飾符'('in

這些都是我曾嘗試以下可能的解決方案,但未能:

^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^ 
/^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^/ 
~^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^~ 
#^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^# 

我希望你能幫助我 在此先感謝

+0

什麼錯誤信息? – Nickool

+0

@Negin:閱讀題目標題。 – icktoofay

+1

你想在用戶名中允許什麼? – 2011-08-11 05:10:00

回答

1

你的正則表達式與^啓動,因此這被解釋爲delimiter

稍後,您的正則表達式會在其中包含一個^,並且由於它未轉義,因此它將被解釋爲正則表達式的模式部分的結尾。

緊接在第二個^之後,您的正則表達式將包含一個(。在preg_match中,關閉分隔符之後的任何內容都被解釋爲modifier(不是修飾符。要修復它,你需要read the PHP manual page on delimiters

我會假設你想是這樣的:

/^([a-zA-Z])[a-zA-Z_-]*[\w_-]*[\S]$|^([a-zA-Z])[0-9_-]*[\S]$|^[a-zA-Z]*[\S]$/ 

在你的第一個例子,它看起來像你忘了添加任何分隔符,和^並不打算作爲分隔符。在隨後的添加分隔符的示例中,您沒有告訴我們這些問題是什麼(可能它們應該是不同的問題?)。

-1
#^([a-zA-Z])[a-zA-Z_-]*[\/w_-]*[\/S]$|^([a-zA-Z])[0-9_-]*[\/S]$|^[a-zA-Z]*[\/S]$^# 

您遇到的問題是[\/S]。這會強制用戶名以S或正向/斜線結尾。你打算在那裏寫[\S]。 (雖然我不知道什麼這樣做的目的是,這將使任何非空格字符結尾。)

相關問題