2014-03-07 86 views
2

我有以下正则表达式模式:C#正则表达式来验证串

"[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}" 

,我想验证串以下列条件

  • 仅允许字母数字字符
  • 具有仅长度8或11
  • 前6个字符必须都是大写字母

但是,上述模式不起作用。什么需要改变?

+0

尝试http://Regexhero.net它的测试表达式的好工具。 –

+0

试试这个:(?:[a-zA-Z] {8,11} \ d +) –

+0

如果你想要更准确的答案。你应该贴一些例子。 –

回答

7

使用以下正则表达式:

^[A-Z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$ 

前6个字符必须是大写字母(^意味着以下图案应当匹配在字符串的开头):

^[A-Z]{6} 

现在应该有2或5个以上的字母数字字符; 2个字母数字chracters应该来无论如何:

[A-Za-z0-9]{2} 

和3之后是可选的(?:0或1个匹配前述图案,$意味着前述图案应匹配于字符串的末尾):

([A-Za-z0-9]{3})?$ 

使用^$一起(^PATTERN$),图案应整个字符串代替子串匹配。

+1

很好的详细解释。很教学! :)为了完整性,您可以添加'^'表示模式的那部分必须位于目标字符串的开始处(锚定到它的开始处),并且'$'将另一端锚定到字符串的末尾以同样的方式,这样这个模式_must_代表_whole_目标字符串。 – Kjartan

+0

@Kjartan,谢谢你的建议。我添加了关于'^','$'的解释。 – falsetru

1

表达应该是:

^[A-Z]{6}([A-Za-z0-9]{2}|[A-Za-z0-9]{5})$