Regex 数据注释正则表达式

Regex 数据注释正则表达式,regex,asp.net-mvc,entity-framework,data-annotations,Regex,Asp.net Mvc,Entity Framework,Data Annotations,我需要一个正则表达式来表示如下字符串: 例1234-1234-12345 其中前两个数字必须介于01-18之间,且整个字符串长度必须为15个字符 示例:0511-xxxx-xxxxx 我尝试使用[RegularExpression(@“^[0-9]{1,18}$”, ErrorMessage=“无效Id.”] 但它不起作用,它甚至给了我一个错误,上面写着“丢失了” 更简单的是,一个13个字符长的数字字符串,其中前两位数字必须介于01-18之间 例1234567890123 (我更喜欢第一种格式

我需要一个正则表达式来表示如下字符串:

例1234-1234-12345

其中前两个数字必须介于01-18之间,且整个字符串长度必须为15个字符

示例:0511-xxxx-xxxxx

我尝试使用
[RegularExpression(@“^[0-9]{1,18}$”,
ErrorMessage=“无效Id.”]

但它不起作用,它甚至给了我一个错误,上面写着“丢失了”


更简单的是,一个13个字符长的数字字符串,其中前两位数字必须介于01-18之间

例1234567890123

(我更喜欢第一种格式,但这一种也行)


我不知道如何使用正则表达式,所以如果有人能给我一个链接到我可以学习的地方,我将非常感激

而且,最重要的是,如果有更好的方法不用使用正则表达式来解决这个问题,我也会很感激


显然,我的要求有点不清楚。我希望它的前两个数字(XXxx-XXxx-xxxxx)是01、02、03、04、05、06、07、08、09、10、11、12、13、14、15、16、17、18

您的“前两个数字”有点不清楚,但是:

var pattern = @"(0\d|1[0-8])\d\d-\d{4}-\d{5}";
如果要匹配整个字符串,而不仅仅是查找子字符串,则需要

var pattern = @"^(0\d|1[0-8])\d\d-\d{4}-\d{5}$";
如果没有使用连字符分隔组,请使用:

var pattern = @"^(0\d|1[0-8])\d{11}$";
你可以像这样使用它

Regex.IsMatch(aString, pattern)

非挥发性物质。谢谢我是一个傻瓜,我不知道你的是伟大的。现在,你能给我解释一下吗?特别是本部分^(0\d|1[0-8])。如果我只想要数字怎么办?不,我不知道你说的“只通缉号码”是什么意思?如果您删除了
-
,则
[08]
表示
1
数字后跟
0
数字或
8
数字是可以接受的-因此您将接受
10
18
。请参阅此处,了解表达式的解释:-如果您还有其他问题,请告诉我。NM-我明白您的意思。我为数字添加了另一个图案,[0-8]部分很好。我的意思是,我想知道如果表达式是纯数字的:0144786598775或1812131456789。我的程序不能接受这样的表达式:00xxxxxxxxxx,以(00)开头。起始号码必须是(01到18)谢谢!它工作得很好。但是如果我的表达式不能接受“00xxx…”怎么办?起始数字必须是(01到18)