2017-04-07 156 views
3

尝试处理自定义.NET应用程序的表达式以从地址中提取邮政编码。对于大写字母的.NET正则表达式Negative Lookahead

的地址是在一个单一的线路

12345 Example Street, NY 10019 United States 

使用以下表达式

\d{3,5}-\d{3,5}|\d{5}(?![A-Z]{2}) 

但这似乎被取两者12345以及邮政编码10019。考虑到我在负面预测中只提到了2个大写字母,它不应该只考虑在2个字母的NY代码之前的邮政编码吗?我在这里做错了什么?

我用|运营商为ZIP代码在12345-12345以及12345格式

请查看我测试here

+1

为什么要在不支持.NET正则表达式语法的在线正则表达式测试中测试.NET正则表达式?使用regexhero.net或regexstorm.net。 –

+0

糟糕,不知道。非常感谢! – blackystrat

回答

2

您可以使用这里回顾后的正则表达式:

\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5} 

查看regex demo

(?<=[A-Z]{2}\s+)将需要2个大写字母,然后是5个数字前的1个或多个空格。

要确保你匹配的数字指定数量,你可以使用单词边界\b

\b(?:\d{3,5}-\d{3,5}|(?<=[A-Z]{2}\s+)\d{5})\b 

another demo

+1

非常感谢。像魅力工作 – blackystrat

+0

完成,再次感谢! – blackystrat

相关问题