0

我有一个字符串需要采用以下格式:XX999900. XX只能是字符,没有小数点,后跟 6 位数字。

所以我想通过以下方式使用正则表达式:

string sPattern = @"^\\[A-z]{2}\\d{6}$";
indexNumber = "ab9999.00";
if (Regex.IsMatch(indexNumber, sPattern)
{
     // do whatever
}

它失败。有人可以告诉我有什么问题吗?

4

4 回答 4

7

我不相信这[A-z]是一个有效的字符类。\\使用时您当然不需要@

试试这个:

@"^[a-zA-Z]{2}\d{6}$"

如果您需要格式有 4 个数字,.然后是两个数字,请尝试以下操作:

@"^[a-zA-Z]{2}\d{4}\.\d{2}$"

(请注意,对于 .NET,\d将匹配任何[0-9]脚本中的数字,因此如果您只想匹配这些数字,则可能需要将其替换为)

于 2012-08-08T18:15:09.780 回答
1

你有太多的转义字符。尝试:

string sPattern = @"^[a-zA-Z]{2}\d{6}$";
于 2012-08-08T18:15:16.760 回答
1

A-z无效(大小写混合),并且您没有 6 个连续数字。你有 4 个,一个小数,然后还有 2 个。尝试

^[a-zA-Z]{2}\d{4}.\d{2}$
于 2012-08-08T18:16:52.243 回答
0

它失败了,因为您在其中测试的值是小数,而您的正则表达式模式没有。另外,您的正则表达式模式将查看整个字符串。也就是说,^ 表示从字符串的开头开始,而 $ 表示字符串的结尾。如果您只想要“以”开头,则将 $ 放在模式的末尾。

于 2012-08-08T18:16:51.577 回答