2011-12-15 29 views
1

我需要一個正則表達式來驗證前4位數字,然後3位數字。第一個數字必須相同。創建一個正則表達式接受前4位數字前綴和3位數字後

可接受的輸入應該是例如:

7777989 
8888767 

無效的條目:

7778888 
7777abc 
8989123 

現在我的問題是,在我的代碼IAM創建基於類名的正則表達式。例如像這樣

if (currentChar == 'n') regex += '[0-9]'; 
else if (currentChar == 'd') regex += '^[0-9]+$'; 
在上面的代碼中n和d

是類名,其中n表示「任何數字」和d表示「相同數字」。因此,對於上述示例,該規則將爲ddddnnn

回答

4
^(\d)\1{3}\d{3}$ 

應該這樣做。

^  # Start of string 
(\d) # Match a single digit, capture in group 1 
\1{3} # Match the same digit as in group 1, three times 
\d{3} # Match three digits (any) 
$  # End of string 

一個快速和骯髒的正則表達式生成器(在Python),假設所有d數字必須是相同的:

def makere(rule): 
    first_d = True 
    parts = ["^"] 
    for letter in rule: 
     if letter == "d": 
      if first_d: 
       parts.append(r"(\d)") 
       first_d = False 
      else: 
       parts.append(r"\1") 
     if letter == "n": 
      parts.append(r"\d") 
    parts.append("$") 
    return ''.join(parts) 

結果:

>>> makere("ddddnnn") 
'^(\\d)\\1\\1\\1\\d\\d\\d$' 
>>> makere("ddnnndd") 
'^(\\d)\\1\\d\\d\\d\\1\\1$' 
+0

確定我會盡力讓ň你知道 –

+0

它的工作時,我給888nnn但不動態工作,當我做dddnnn –

+0

我不能跟着你。您嘗試的確切字符串是否與您預期的方式相符? –

相關問題