如何使用正则表达式检查字符串中的序列

时间:2014-07-07 09:46:27

标签: regex c#-4.0

我想检查输入字符串是否格式正确。 ^ [\ d - 。] + $表达式仅检查数字的存在和。(点)和 - (减号)但我也想检查它的序列。

假设我想用计算器。而且 - 只。如何获得在所有条件下满足的正则表达式。

Regex.IsMatch(input, @"^[\d-\.]+$")
   //this expression works for below conditions only
    if string v1="10-20-30";  // should return true
    if string v1="10-20";  // should return true
    if string v1="10.20";  // should return true
    if string v1="10R20";  // should return false
    if string v1="10@20";  // should return false
    if string v1="10-20.30.40-50";  // should return true
    if string v1="10";  // should return true

    //above expression not works for below conditions
    if string v1="10--20.30"; // should return false
    if string v1="10-20-30..";  // should return false
    if string v1="--10-20.30";  // should return false
    if string v1="-10-20.30";  // should return false
    if string v1="10-20.30.";  // should return false

1 个答案:

答案 0 :(得分:1)

类似

        var pattern = @"^(\d+(-|\.))*\d+$";

应该为你做好工作。

这个正则表达式“说的”是:

  1. 查找一个或多个数字(\ d +)
  2. 后面跟一个减号或点( - |。) - 需要用\
  3. 来逃避这里的点
  4. 这可能是字符串中的0次或更多次 - 最后的星号(\ d +( - |。))*
  5. 然后是另一个或多个数字(\ d +)。
  6. 这一切应该在字符串开头之后和结束之前(^和$我相信你知道)。
  7. 注意:如果您需要将数字设为负数,则需要在正则表达式中的\ d +实例之前添加另一个条件减号或:

    var pattern = @“^( - ?\ d +( - |。))* - ?\ d + $”;

    此致