2014-01-27 113 views
4

我需要找到限制数据输入的模式。我需要它来限制输入:正则表达式模式与输入字符串不匹配

首字符必须是“S” 二字符必须是“S”,“T”,“W”,“X”或“V” 接下来的6必须号码0 - 9 最后2可以是任意大写字母或任意数量的0 - 9

所以我的研究使我把这个在一起.....

^[S][STWXV]/d{6}[A-Z0-9]{2}$

从我阅读:

[S]意味着资本字母S仅 [STWXV]意味着从这个名单 /d{6}意味着6位 [A-Z0-9]{2}指2个字符的任何一个字母 - Z或0 - 9

我不是一个字符串寻找匹配的任何地方,我需要整个字符串来匹配这个模式。

那么为什么Regex.IsMatch("SX25536101", "^[S][STWXV]/d{6}[A-Z0-9]{2}$")返回false?

伊夫显然出了问题的地方,但这个是我在正则表达式的第一次尝试,这是没有意义:(

+2

尝试找到更好地描述您的问题的标题。考虑这个标题将被用于搜索引擎。 –

+1

如此接近:尝试\ d而不是/ d –

+1

反斜杠转义有趣的字符,如\ d。正斜线用多种语言写在正则表达式的任一侧,表示表达式是正则表达式。 –

回答

8

您需要使用\d的数字:

Regex.IsMatch("SX25536101", @"^[S][STWXV]\d{6}[A-Z0-9]{2}$"); // true 

注:这是很好的Regular Expressions Cheat Sheet它可以帮助你在未来

+2

多烦人得到如此密切的一个不现货这样一个愚蠢的错误!谢谢。 – FlipTop

-1

或者不使用在所有\d(首选和更快):

^S[STWXV][0-9]{6}[A-Z0-9]{2}$

请参阅herehere为什么。

+0

为什么这是首选? -1 – OGHaza

+1

\ d是数字的简写,它使正则表达更加简洁。用它。 –

相关问题