【问题标题】:Regular Expression allow only numbers, commas and dashes正则表达式只允许数字、逗号和破折号
【发布时间】:2017-08-02 02:25:36
【问题描述】:

我正在尝试提出一个数据注释正则表达式来匹配以下格式。

34

38-30

100,25-30

4-5,5,1-5

基本上,表达式应该只允许 numbers-(dash),(comma) 以任意顺序

我尝试关注但无法正常工作。

[RegularExpression(@"(0-9 .&'-,]+)", ErrorMessage ="Lot numbers are invalid.")]

【问题讨论】:

  • [RegularExpression(@"^[0-9\-,]+$", ...]

标签: regex asp.net-mvc data-annotations


【解决方案1】:

我认为您的用例有一个数字的 CSV 列表,或 范围 的数字(标识为一个数字,后跟一个破折号,后跟另一个数字)。我们可以使用以下正则表达式:

[0-9]+(?:-[0-9]+)?(,[0-9]+(?:-[0-9]+)?)*

此正则表达式匹配一个数字,后跟一个可选的破折号和另一个数字,该数字后跟逗号和另一个类似的术语,任意次数。

在下面的演示中,我在正则表达式的两侧添加了锚点。是否需要这样做取决于您打算如何使用该模式。

Demo

【讨论】:

  • 您的正则表达式工作不正常。他说他希望它以任何顺序工作。最后两行未被检测为有效。
  • @Spectarion “最后两行?”如果我们在我的模式中添加锚点,它会起作用。如果没有锚,那么在逻辑上应该失败的字符串上可能会发生部分匹配。
  • 我现在明白了。您假设他需要使用 CSV 数字列表,并且您使其能够与 CSV 一起正常工作。我只是假设他需要一个正则表达式来只允许这 3 个字符:数字、破折号和逗号。
【解决方案2】:

它是^[0-9,-]*$。看看这个demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多