2017-07-28 24 views
0

名利場格式[img]
更糟糕的是,白白fleshlings有時會代表文字的電話號碼兩個相似的字符。這些所謂的虛擬電話號碼以1和區號(即1-123-)開頭,但在此之後,它們將繼續混合字母(大寫或小寫),數字和破折號。它們僅限於使用7個字母和數字(在1和區域代碼後面),但可以在除了另一個破折號之後的任何點插入破折號。 Flahlings讓事情變得如此複雜!正則表達式模式以防止彼此相鄰

我一直在研究這個難題;我已經能夠處理第一組整數和破折號的工作,但我無法得到字母數字部分的工作。 我使用python 3,這是我到目前爲止有:

vanity_number = r'[+]?(1-)[0-9]{3}-[a-zA-Z0-9-]{7}' 

這還挺作品在一定程度上,但我需要它由字母和數字分別統計破折號,讓像1-345- qpG-8s-vd仍然適合這種模式。感謝您的任何幫助,您可以提供。

回答

2

最後一部分應該由7個字母組成。如果我理解正確,每一個都可以跟隨一個可選的破折號,但是不能有兩個破折號相接,並且可能不應該以短劃線結束。

^\+?1-\d{3}-(?:[A-Za-z\d]-?){7}\b$ 

末取下字邊界\b如果一個破折號結束將被允許。

Here is a demo at regex101