我嘗試使用此圖案正則表達式驗證串
^[A-z]*[A-z,-, ]*[A-z]*
來匹配與隨後由多個連字符或空間的多個字母字符(AZ)開始並以字母字符結尾的字符串,如:
Azasdas- - sa-as
但它不起作用。
我嘗試使用此圖案正則表達式驗證串
^[A-z]*[A-z,-, ]*[A-z]*
來匹配與隨後由多個連字符或空間的多個字母字符(AZ)開始並以字母字符結尾的字符串,如:
Azasdas- - sa-as
但它不起作用。
您不需要逗號,在字符範圍內,您還需要指定[A-Za-z\- ]
,因爲A-Z和a-z的ASCII不是連續的。你錯過了一些可允許的空間,而你最後的表達式需要解釋這些傳說。
你需要的東西更接近這個:
^([A-Za-z]*)-\s*([A-Za-z][A-Za-z -]*)([A-Za-z-]*)$
根據您真的想打破上去。如果不知道「塊」背後的上下文,它可能會或可能不會輕鬆地將它拆分爲連字符。
編輯
其實,它更像是:
^([A-Za-z]*)([- ]*)([A-Za-z-]*)$
這是一個詞,其次是任意空格和連字符,接着是可能包含一個連字符的詞。
@NullUserExceptionఠ_ఠ在第一個單詞中不允許出現非字母字符? –
你就像一個忍者! (是的,我粘貼了錯誤的字符串 - 只是編輯它。) –
如果將'-'放在字符類的末尾或開頭,則會失去其特殊含義。 – NullUserException
不要使用 ''(逗號)
^[A-z]*[A-z- ]*[A-z]*
'[A-Z]'允許非字母。 –
目前公認的答案(^[A-Za-z][A-Za-z-]*[A-Za-z]$
)將只匹配至少兩個字符長的字符串 - 例如,它將匹配字符串"AB"
,但不僅僅是"A"
或"B"
。與此相比,此正則表達式:
^[A-Za-z]+([ -]+[A-Za-z]+)*$
通過分組[ -]+
和第二[A-Za-z]+
在一起我是說,如果有任何空間和/或連字符,它們必須跟更多的字母。組中的*
量詞使其成爲可選項,因此"A"
將匹配,但仍符合字符串以字母開頭和結束的要求。
問題通常在其中有一個'?'。很高興你分享一個不起作用的正則表達式,但這不是共享破壞代碼的地方。大多數人會問一個問題,爲什麼它被打破了,「你能幫忙嗎?」類型的東西。 –
@MarcB:OP總結了這個問題,並告訴我們他是如何解決這個問題的;你還需要什麼? 「我究竟做錯了什麼?」暗示,並且「你能幫忙嗎?」浪費空間(IMO)。 –