2016-02-13 74 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

相关问题