2016-02-13 72 views
1

這是我想要的代碼:它接受aaaaaaaa正則表達式的字母數字不僅是工作

string MatchNumberPattern = "^[a-zA-Z0-9]*$"; 

if (!Regex.IsMatch(cueTextBox9.Text, MatchNumberPattern)) 
{ 
    MessageBox.Show("Enter 8 Space Alphanumeric BT ID only"); 
    cueTextBox9.Text = String.Empty; 
} 
else 
{ 
    do something(); 
} 

,但我想這兩個字母和數字像aaaa1234的組合。

+1

當然它採取'aaaaaaaa'字母數字字符的任意金額,指定它採取任何爲AZ或az或0-9的任何次數。所以它也需要'aaabbbjfgkgAJFFJL0142342'。你想幹什麼?如果您只想匹配數字:'^ [0-9] * $'或'^ [0-9] + $'如果空字符串不正確。代替'[0-9]',您可以使用'\ d'作爲簡寫,但請首先澄清您想要的內容:) –

+0

我只想接受字母數字,而不是隻接受字母數字或不接受數字.. –

+0

字母數字意思是「字母數字是字母和數字字符的組合......」(引自維基),所以它表示字母和數字。這就是你已經在這裏做的。 –

回答

2

要同時需要一個字母,出現在輸入一個數字,你需要積極向前看符號

@"^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]*$" 
    ^^^^^^^^^^^^^^^^^^^^^^^^ 

regex demo

(?=.*[a-zA-Z])確保有一個字母和(?=.*[0-9])品牌確定輸入字符串中有一個數字。

由於您正在從單行文本框中輸入內容,因此在lookahead中使用.是安全的。作爲替代,您可以使用@"^(?=[^a-zA-Z]*[a-zA-Z])(?=[^0-9]*[0-9])[a-zA-Z0-9]*$"(基於對比原則)。

2

您可以使用lookahead檢查一位數字並在其餘之前匹配一個字母。

^(?i)(?=\D*\d)\d*[A-Z][A-Z\d]*$ 
  • ^串的開始
  • (?i)flag爲無殼匹配
  • (?=\D*\d) loook提前爲\D*隨後\d位的非數字任何量
  • 如果成功匹配\d*[A-Z]任何量之後是數字的數字
  • [A-Z\d]*比賽,直到串的
  • $結束

See demo at regex101

相關問題