Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式提取合同编号的16位数字_C#_Regex - Fatal编程技术网

C# 正则表达式提取合同编号的16位数字

C# 正则表达式提取合同编号的16位数字,c#,regex,C#,Regex,我们的客户通常会给我们发送一些信息,其中包括他们的合同号。我们的合同编号格式为从1000开始的16位字符串(例如:100011730010745) 现在,我们的工具可以识别合同编号,使用正则表达式可以找到16位数字,这些数字彼此相邻 但问题是,有时它们包含一些特殊字符,如点(、空格等)。。。在合同的中间号码和这些字符的数量不是恒定的。 例如:10001170.5102.1428或1000 11706 0056941 有任何正则表达式可以匹配这些数字吗 谢谢大家! 编辑1:公民ID可能放在合同号旁

我们的客户通常会给我们发送一些信息,其中包括他们的合同号。我们的合同编号格式为从1000开始的16位字符串(例如:100011730010745)

现在,我们的工具可以识别合同编号,使用正则表达式可以找到16位数字,这些数字彼此相邻

但问题是,有时它们包含一些特殊字符,如点(、空格等)。。。在合同的中间号码和这些字符的数量不是恒定的。 例如:10001170.5102.1428或1000 11706 0056941

有任何正则表达式可以匹配这些数字吗

谢谢大家!

编辑1:公民ID可能放在合同号旁边,用空格隔开。一些客户在合同编号上同时标注“特殊字符”


例:1000.1170。1000.3828这里有一个非常类似的问题:

添加对命名空间的引用

using System.Text.RegularExpressions;
然后在你的身体里

// Example
string startNumber = "100.23 455 * 4332";

// Replace anything but numbers 0-9 with nothing
string formattedNumber = Regex.Replace(startNumber, [^0-9], "" ); 

// formattedNumber = 100234554332

您可以使用此行获取合同编号值

var string='AASHGHSABCD1000。65.893 4652345efghijklmnasasaop'
var res=string.replace(/[^a-zA-Z 0-9]+//g',).replace(/\s/g',).substr(string.indexOf(“1000”),16);
警报(res)

使用
[^\d]
删除任何非数字字符,并使用
^$
验证16位输入(以开始和结束)


删除那些“特殊字符”中的任何一个,然后验证或可能验证?@horcrux:你的答案是目前为止最好的,但有可能空格和圆点都是相邻添加的,如:1000.1170。1000.3828. 有什么建议吗?用
*
{0,2}
代替
。对不起,你写过正则表达式吗?
using System;
using System.Text.RegularExpressions;

class MainClass {

  public static void Main (string[] args) {
    // valid 16 digit
    string citizenID = "1000.1170. 1000.3826";
    // not valid more than 16 digit
    //string citizenID = "1000.1170. 1000.3826789";
    citizenID = Regex.Replace(citizenID, @"[^\d]", ""); 
    Match match = Regex.Match(citizenID, @"^\d{16}$");
    if(match.Success)
      Console.WriteLine ("valid citizenID: " + citizenID);
    else
      Console.WriteLine ("not valid citizenID");
  }
}