正则表达式生成辅助

时间:2017-12-07 06:48:32

标签: regex

我需要一些有希望的简单快捷的帮助。我从条形码中获取了一串数据,我需要拼接它以获得三个不同的值 - 帐号,日期和发票号。

必须为.Net Framework编写正则表达式。

条形码返回的示例如下所示 -

000295934009000306511302017001

前9位是帐号。我已经通过使用这个 - ^\d{9}

得到了解决方法

接下来的10位数字是发票编号。我不确定正则表达式会给我什么。

然后,发票编号后面的8位数字是日期(在此示例中为11302017)。我需要将其拉成MM/DD/YYYY格式。

我也将为此创建一个命名组模式。

(?<account>^\d{9})(?<date>XXXXXXX)(?<invoice>XXXXXXX) - the X's are what I need to figure out. 

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

这是正则表达式:

(\d{9})(\d{10})(\d{8})

自我解释:组1 9位,组2 10位和组3 8位。

你可以像这样使用它:

string pattern = @"(\d{9})(\d{10})(\d{8})";
string input = @"000295934009000306511302017001";
var match = Regex.Match(input, pattern);
var accountNumber = match.Groups[1].Value;
var invoiceNumber = match.Groups[2].Value;
var date = match.Groups[3].Value;

要获取DateTime对象,请使用ParseExact

DateTime.ParseExact(date, "MMddyyyy",  CultureInfo.InvariantCulture)

请务必为System.Text.RegularExpressionsSystem.Globalization添加使用指令!

答案 1 :(得分:0)

这是正则表达式:

(\d{9})(\d{10})([0-1][0-2][0-3][0-9]\d{4})

accountNumber - Group1

invoiceNumber - Group2

日期 - Groups3