[英]Regular Expression Repeating Pattern delimited by comma
我在Javascript中有以下正則表達式:
/\w{1,}\s*\w{1,}/
這將檢查字符串是否至少包含兩個大於1個字符的單詞。
EX-
asd fgh - Valid
a b d dfd - Valid
xscxs - Invalid
我現在有一個新的要求,我試圖實現,但不能正確。
新要求:能夠使用與以前相同類型的輸入的逗號分隔列表。 不能以逗號結尾。 根據上述規則,每個項目必須有效。
如果沒有逗號,那么它也是有效的。
此外,所有字符都是字母,沒有數字/特殊字符
Valid: HOH vfdffd,dsfds dfgd,UIU fgfd
Valid: JOI JOIO
Invalid: QASW fgdfg,
Invalid: sdfds,1234 dfgdfg
Invalid: JKJ,ABCD
您可以將第一個要求的模式指定為[a-zA-Z]+(?:\\s[A-Za-z]+)+
以匹配1+個字母字符,然后匹配1 +個空格+ 1個序列或更多單詞字符,然后用逗號重復另一組內的模式:
/^[a-z]+(?:\s[a-z]+)+(?:,[a-z]+(?:\s[a-z]+)+)*$/i
請參閱正則表達式演示 (因為輸入是一個多行字符串,所有\\s
替換為演示中的空格)。
如果允許多個空格,請用\\s+
替換\\s
。
細節 :
^
- 字符串的開頭 [az]+
- 1+字母 (?:\\s[az]+)+
- 1個或更多序列(即空間是強制性的)
\\s
- 一個空格(添加+
以匹配一個或多個發生) [az]+
- 1+個字母 (?:,[az]+(?:\\s[az]+)+)*
- 零個或多個序列(即逗號是可選的)
,
- 一個逗號 (?:\\s[az]+)+
- 見上文 $
- 結束字符串。 .regex(/^(?:(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4})(?:(?:\b\,)(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4})*$/)
Explanation:
(?:\b\,) -> Match with a , at the beginning of the string only if its preceded by a word boundary
(?:(?![0-9]{4}|[a-zA-Z]{4})[a-zA-Z0-9]{4}) -> Match a string with letter and digits only if dont have 4 digits ow 4 letters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.