我正在玩短信服务,允许客户给我们发短信,他们发送的部分文字将包含国家保险号,价值和日期。
所以我需要尝试尽可能聪明地处理格式。
例如,如果有人发短信(格式)
“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”
如何尽可能地提取这个并验证格式,例如很棒。
答案 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。
那应该相当健壮。