正则表达式模式不匹配输入字符串

时间:2014-01-27 16:29:21

标签: c# regex

我需要找到一种限制数据输入的模式。我需要它来限制输入:

第一个字必须是“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个字符A - Z或0 - 9

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

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

我在某处显然出了问题,但这是我对正则表达式的第一次尝试,这没有任何意义:(

2 个答案:

答案 0 :(得分:8)

您需要将\d用于数字:

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

注意:以下版本Regular Expressions Cheat Sheet可以帮助您。

答案 1 :(得分:-1)

或根本不使用\d(首选且更快):

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

请参阅herehere了解原因。