使用短划线创建表达式/或忽略第5位后的所有值

时间:2014-03-28 20:57:49

标签: regex

我需要在字符串中使用表达式来查找一系列邮政编码

当邮政编码有5个数字

时,我已经有效的表达式

e.g。

邮政编码范围30000-39999

String USAPostcodeExp = @"^[0-3][0-9][0-9][0-9][0-9]$";

这适用于邮政编码31234

但有些邮政编码有5个数字,一个短划线和4个数字

e.g。邮政编码31234-1234

并且这些内容未在脚本中识别出来。

只有前5位与我们的需求相关

那么我该如何编写呢?所以要么占用额外的破折号和4位数

或者它忽略了第5位后的任何内容。

1 个答案:

答案 0 :(得分:1)

您可以为当前正则表达式添加单词边界,而不是使用$

@"^[0-3][0-9][0-9][0-9][0-9]\b";

此外,您提到的范围是3000039999,所以不应该是:

@"^3[0-9][0-9][0-9][0-9]\b";

相反?

缩写为:

@"^3[0-9]{4}\b";

以上将执行第二个选项:忽略第5位后的所有内容(但仍确保它是所需范围内的5位数代码)。

如果要匹配其他部分,可以使用可选组:

@"^3[0-9]{4}(?:-[0-9]{4})?$";