【发布时间】:2018-05-15 11:07:30
【问题描述】:
我正在尝试制作一个只接受数字、点并且具有最小值和最大值的正则表达式。
例如:
-
1.000- 有效 -
100.000- 有效 -
100.000a- 无效 -
.10- 无效 -
100- 无效
我有这个,它可以根据需要使用数字和点,这里只缺少一件事,那就是最小和最大验证。
@"^([+-]?\d{1,3}(?:,\d{1,3})*(?:\.\d+)*)$"
PS: 我在.net core 上使用数据注释
更新
我有一个 javascript 将输入字段中的用户输入分隔为千位格式,例如:
发件人:1000000
收件人:1.000.000
为了更好的用户体验。
但是,问题在于数据注释的验证。 使用上面的正则表达式处理点,我只需要一个最小值和最大值。
我尝试过使用 Range(min, max),但由于这些点,它会将其识别为无效输入。
问候
【问题讨论】:
-
bool isValid = Regex.IsMatch(pattern, value) && value >= min && value <= max怎么样 -
哦,我忘了说我在.net上使用数据注释
-
如果这是用于验证属性,您是否考虑过根据您的要求创建一个新属性?它们不难制作,并且可能比正则表达式版本更具可读性(如果您的最小值和最大值发生变化,则很容易修改)。
-
@Chris 我该怎么做?
-
@Muhaki:在 cmets 中解释起来有点困难,但幸运的是,您可以通过 google 找到帮助。 msdn.microsoft.com/en-us/library/cc668224.aspx 之类的内容可能会帮助您入门,或者此处可能存在与自定义验证属性相关的问题。
标签: c# regex validation