我有一个字符串,需要采用以下格式:XX999900
。
XX
必须是字符,而不是小数,后跟6位数字。
所以我想通过以下方式使用正则表达式:
string sPattern = @"^\\[A-z]{2}\\d{6}$";
indexNumber = "ab9999.00";
if (Regex.IsMatch(indexNumber, sPattern)
{
// do whatever
}
失败了。 有人能告诉我出了什么问题吗?
答案 0 :(得分:7)
我不相信[A-z]
是有效的角色类。使用\\
时,您当然不需要@
。
试试这个:
@"^[a-zA-Z]{2}\d{6}$"
如果您需要格式为4个数字后跟.
,则需要另外两个数字,请尝试以下操作:
@"^[a-zA-Z]{2}\d{4}\.\d{2}$"
(请注意,对于.NET,\d
将匹配任何脚本中的数字,因此如果您只想匹配那些,可能需要将其替换为[0-9]
答案 1 :(得分:1)
你有太多的转义字符。尝试:
string sPattern = @"^[a-zA-Z]{2}\d{6}$";
答案 2 :(得分:1)
A-z
无效(大小写混合),并且您没有6位连续数字。你有4,小数,然后是2。尝试
^[a-zA-Z]{2}\d{4}.\d{2}$
答案 3 :(得分:0)
它失败了,因为你测试的值是小数,而你的正则表达式没有。另外,你的正则表达式模式将查看整个字符串。那就是^表示从字符串的开头开始,$表示字符串的结尾。如果你只想要“以...开头”,那么在模式的最后放下$。