正则表达式验证和文本提取

时间:2014-07-16 16:00:38

标签: c# regex

我正在玩短信服务,允许客户给我们发短信,他们发送的部分文字将包含国家保险号,价值和日期。

所以我需要尝试尽可能聪明地处理格式。

例如,如果有人发短信(格式)

“QQ123456A 500 4 / oct” OR

“QQ123456A 500.00 24 / oct” OR

“QQ123456A 500.00 24 / oct / 14” OR

“QQ123456A 500.00 24/10/14” OR

“QQ123456A 500.00 24-oct-14” OR

“QQ123456A 500.00 24oct14”

如何尽可能地提取这个并验证格式,例如很棒。

1 个答案:

答案 0 :(得分:1)

伪代码

按空格分割

正则表达式为NI编号^\s*([a-zA-Z]){2}\s*([0-9]){1}\s*([0-9]){1}\s*([0-9]){1}\s*([0-9]){1}\s*([0-9]){1}\s*([0-9]){1}\s*([a-zA-Z]){1}?$(未经测试)

号码 - 我认为这是一个付款所以它只能是一个数字,一个小数或一个逗号(5,000.00)可能由一个£符号进行 - 这样很容易测试。

日期 - 没有快速解决它 - 我可以做几个测试 - 它包含 - 或/.

是否包含oct,nov等。

取决于传递的测试 - 相应地解析日期。

您可以检查您是否匹配了NI编号和成本 - 如果您有,那么您可以在剩余值上使用.format()。 (或者其他 - 自从使用C#以来的年龄 - 只是格式化到日期 - 如果它不解析然后返回false。)

然后只检查没有部件返回false。

那应该相当健壮。