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