Regex PO Box正则表达式帮助匹配尾随数字

Regex PO Box正则表达式帮助匹配尾随数字,regex,Regex,我有以下来自正则表达式库的正则表达式,它很好地捕捉了一些PO-Box变体。它唯一没有做的就是匹配尾随数字: 邮政信箱123 任何人都可以帮助修改这个正则表达式,使其也匹配尾随数字吗 \b[P|p]?(OST|ost)?\.?\s*[O|o|0]?(ffice|FFICE)?\.?\s*[B|b][O|o|0]?[X|x]?\.?\s+[#]?(\d+)\b 谢谢。\code>\d+=一个或多个数字,您在其中。使用,它是一个救生圈。我尝试了邮政信箱2334328789791297,它接受了它,以

我有以下来自正则表达式库的正则表达式,它很好地捕捉了一些PO-Box变体。它唯一没有做的就是匹配尾随数字:

邮政信箱123

任何人都可以帮助修改这个正则表达式,使其也匹配尾随数字吗

\b[P|p]?(OST|ost)?\.?\s*[O|o|0]?(ffice|FFICE)?\.?\s*[B|b][O|o|0]?[X|x]?\.?\s+[#]?(\d+)\b

谢谢。

\code>\d+=一个或多个数字,您在其中。使用,它是一个救生圈。我尝试了邮政信箱2334328789791297,它接受了它,以及一些其他的变化。您的代码看起来很好(一眼就能看出)。

\d+=一个或多个数字,其中包含这些数字。使用,它是一个救生圈。我尝试了邮政信箱2334328789791297,它接受了它,以及一些其他的变化。您的代码看起来很好(简单一看)。

假设“PO Box 123”中的尾随数字是“123”,则正则表达式与它们匹配。它甚至捕获了返回参考3的数字

你的正则表达式有很多缺陷。例如,它匹配
OST | | | | 0

我可以推荐我自己的邮政信箱正则表达式吗

^(?:Post (?:Office )?|P[. ]?O\.? )?Box #?([0-9]+)
启用该选项使
^
$
在换行符处匹配(通常为
/m
),并启用不区分大小写选项(通常为
/i
)。不要启用自由间距选项(通常为,
/x

下面是它匹配的字符串的一些示例:

  • 邮政信箱#123
  • 邮箱123
  • 邮政信箱123
  • 邮政信箱123
  • 阿宝。方框123
  • 邮政信箱123
  • 方框123

尾随数字被捕获到反向参考1。

假设“PO Box 123”中的尾随数字为“123”,则正则表达式与它们匹配。它甚至捕获了返回参考3的数字

你的正则表达式有很多缺陷。例如,它匹配
OST | | | | 0

我可以推荐我自己的邮政信箱正则表达式吗

^(?:Post (?:Office )?|P[. ]?O\.? )?Box #?([0-9]+)
启用该选项使
^
$
在换行符处匹配(通常为
/m
),并启用不区分大小写选项(通常为
/i
)。不要启用自由间距选项(通常为,
/x

下面是它匹配的字符串的一些示例:

  • 邮政信箱#123
  • 邮箱123
  • 邮政信箱123
  • 邮政信箱123
  • 阿宝。方框123
  • 邮政信箱123
  • 方框123

后面的数字被捕获到后参考文献1中。

我根据上面@slevithan的答案工作,并添加了一些改进,这些改进被拒绝作为编辑:

 (^|(?:post(al)? *(?:office *)?|p[. ]*o\.? *))box *#? *(\w+)
除了匹配上述情况外,它还将允许在两种情况之间留出更多的空格,或者不留空格,以及邮政/邮政的简短和完整排列。方框标识符也允许使用字母。警告:确保在模式上启用多行和不区分大小写的模式


我根据@slevithan的上述答案进行了修改,并添加了一些改进,但被拒绝编辑:

 (^|(?:post(al)? *(?:office *)?|p[. ]*o\.? *))box *#? *(\w+)
除了匹配上述情况外,它还将允许在两种情况之间留出更多的空格,或者不留空格,以及邮政/邮政的简短和完整排列。方框标识符也允许使用字母。警告:确保在模式上启用多行和不区分大小写的模式


我创建的用于处理邮政信箱验证的模式将处理邮政信箱的任何组合,还将处理尾随数字、字符和数字

Pattern Pattern=Pattern.compile(([p]?(OST | 0ST)?\s*[.-]?\s*[O | 0]?(office)?\s*[.-]?\s*[B][O | 0][X]\s*)

它对我来说很好。我已经用很多组合测试过它

如果你发现有什么问题,请告诉我


注意:如果您只需要邮政信箱,而不是尾随序列,只需从末尾移除。*即可解决此问题。我假设邮政信箱位于大写。

我创建的用于处理邮政信箱验证的模式将处理邮政信箱的任何组合,也将处理尾随数字,字符和数字

Pattern Pattern=Pattern.compile(([p]?(OST | 0ST)?\s*[.-]?\s*[O | 0]?(office)?\s*[.-]?\s*[B][O | 0][X]\s*)

它对我来说很好。我已经用很多组合测试过它

如果你发现有什么问题,请告诉我


注意:如果你需要的是PO bOx,而不是尾随序列,只需从末尾删除。*就可以解决这个问题。我假设PO bOx是大写的。

你说的“尾随数字”是什么意思?你说的“尾随数字”是什么意思?谢谢你的正则表达式。看起来干净多了。但是,如何使其仅与
邮政信箱
匹配?我尝试了
[0-9]*
,但似乎不起作用。@Niner,简单地将
[0-9]+
更改为
[0-9]*
不起作用,因为单词“Box”后面需要空格字符。在空格后添加一个
量词,你就可以开始了。或者,如果您不需要在末尾记录数字,只需将regex中“Box”之后的所有内容替换为单词边界(
\b
)。谢谢您的regex。看起来干净多了。但是,如何使其仅与
邮政信箱
匹配?我尝试了
[0-9]*
,但似乎不起作用。@Niner,简单地将
[0-9]+
更改为
[0-9]*
不起作用,因为单词“Box”后面需要空格字符。在空格后添加一个
量词,你就可以开始了。或者,如果不需要在末尾记录数字,只需将regex中“Box”之后的所有内容替换为单词边界(
\b
)。