正則表達式僅允許字母和數字和空格在字母之間,最大大小爲。不允許空格開頭的正則表達式
([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20}
。
這不允許在開始時使用空格,但它不會檢查最大尺寸條件。我怎樣才能改變這個正則表達式?
正則表達式僅允許字母和數字和空格在字母之間,最大大小爲。不允許空格開頭的正則表達式
([a-zA-Z0-9]+([\\s][a-zA-Z0-9]+)*){0,20}
。
這不允許在開始時使用空格,但它不會檢查最大尺寸條件。我怎樣才能改變這個正則表達式?
您正在指定整個模式的20次重複。我猜你可能意味着像
[a-zA-Z0-9][\\sa-zA-Z0-9]{0,19}
如果空的輸入應該被允許,包裝在(...)?
整個事情。
這個正則表達式是否允許空串[a-zA-Z0-9] {0,1} [\\ sa-zA-Z0-9] {0,19} – user679526
不會,也就是說,它會允許空輸入,但也消除了第一個字符必須是非空白的限制。就像我在答案中已經解釋的那樣,做到這一點的方法是'([a-zA-Z0-9] [\\ sa-zA-Z0-9] {0,19})?'。問號是編寫'{0,1}'的更緊湊和習慣的wsy。 – tripleee
的正則表達式如下:
boolean foundMatch = subjectString.matches("(?i)^(?=.{1,20}$)[a-z0-9]+(?:\\s[a-z0-9]+)*$");
將匹配1〜20個字符開始以字母數字字符,然後由單個空間和更多的字母數字字符的字符串。請注意,該字符串必須以字母數字字符而不是空格結尾。
所有類型的書寫方式,既然你使用Java,爲什麼不使用Java正則表達式「特性」? :d
String regexString = "(?<!\\s+)[\\w\\s&&[^_]]{0,20}";
看,此說:
(?<!\\s+) # not following one or more whitespace characters,
[ # match one of the following:
\\w # word character (`a-z`, `A-Z`, `0-9`, and `_`)
\\s # whitespace characters
&&[^_] # EXCEPT FOR `_`
] #
{0,20} # between 0 and 20 times
它將匹配a-z
,A-Z
,0-9
,和白色的空間,即使\ W否則將包括下劃線,多餘的部分有說不強調 - 我認爲它對Java來說是獨一無二的......無論如何,這很有趣!
對於它應該匹配的內容以及它不應該匹配的內容的幾個例子來說,這會很好。 – aioobe