3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個贊
根據(jù)您的要求而不是您的嘗試,您需要的是:
^(?!(?:\d+|_+| +)$)[\w ]+$
負(fù)前瞻尋找不希望的匹配以使整個過程失敗。這些是僅包含數(shù)字、僅下劃線或僅包含空格的字符串。如果它們永遠(yuǎn)不會發(fā)生,我們希望有一個與^[\w ]+$
幾乎相同的匹配^[a-zA-Z0-9_ ]+$
。
在此處查看現(xiàn)場演示
說明:
^
行首/字符串(?!
負(fù)前瞻開始\d+
匹配數(shù)字|
或者_+
匹配下劃線|
或者[ ]+
匹配空間(?:
非捕獲組的開始)$
非捕獲組的結(jié)尾緊跟行/字符串的結(jié)尾(應(yīng)該找不到以前的匹配項(xiàng)))
負(fù)前瞻結(jié)束[\w ]+$
將字符集中的字符匹配到輸入字符串的結(jié)尾
注意:\w
是[a-zA-Z0-9_]
除非u
設(shè)置修飾符的簡寫。

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個贊
您的正則表達(dá)式的一個問題是,在注釋中,正則表達(dá)式必須匹配并使用整個字符串輸入,而您的模式僅包含不使用任何文本的環(huán)視。
您可以使用
^(?!\d+$)(?![_\s]+$)[A-Za-z0-9\s_]+$
請參閱正則表達(dá)式演示。請注意\w
(當(dāng)用于服務(wù)器端驗(yàn)證時,因此使用 .NET 正則表達(dá)式引擎解析)在服務(wù)器端驗(yàn)證時也將允許任何 Unicode 字母、數(shù)字和更多內(nèi)容,所以我寧愿[A-Za-z0-9_]
堅(jiān)持與服務(wù)器端和客戶端驗(yàn)證一致。
細(xì)節(jié)
^
- 字符串的開頭(這里不是必需的,但在調(diào)試時很好)(?!\d+$)
- 如果整個字符串由數(shù)字組成,則匹配失敗的負(fù)前瞻(?![_\s]+$)
- 如果整個字符串由下劃線和/或空格組成,則匹配失敗的負(fù)前瞻。注意:如果您打算只禁止____
或" "
喜歡輸入,則需要將此前瞻拆分為(?!_+$)
和(?!\s+$)
)[A-Za-z0-9\s_]+
- 1+ ASCII 字母、數(shù)字_
和空白字符$
- 字符串結(jié)尾(這里不是必需的,但仍然很好)。
- 3 回答
- 0 關(guān)注
- 428 瀏覽
添加回答
舉報(bào)