0

假设我有一个邮政编码的正则表达式。

'\<[0-9]{5}(-[0-9]{4})?\>'

这适用于:

XXXXX
XXXXX-XXXX

但它也匹配以下数字:

XXXX-
.XXXX-

我用什么来防止这种情况发生?

4

3 回答 3

0

您似乎想将匹配从字符串的开头锚定到结尾,否则它也会尝试匹配输入的部分内容:

'^\<[0-9]{5}(-[0-9]{4})?\>$'
于 2013-02-13T15:23:59.850 回答
0

您没有指定此字符串必须是它的开头和结尾。只需添加^来指示行的开头和$来指示行的结尾。

所以结果将是:(假设\<and\>是您的语言或其他东西所需要的)。

'\<^[0-9]{5}(-[0-9]{4})?$\>'
于 2013-02-13T15:24:08.790 回答
0

这是原始海报。

'^\<[0-9]{5}(-[0-9]{4})?\>$'

'\<^[0-9]{5}(-[0-9]{4})?$\>'

不要在有噪音的线路上匹配,例如:

lskdjfasfldj  XXXXX asfsdfsdf
sdkdsa XXXXX-XXXX asdfsd

这两个正则表达式只匹配一行的开头,而不是一行的中间。

另外,我在带有 grep -E 的 Unix 系统上使用基本的正则表达式。

于 2013-02-13T16:27:19.007 回答