Regex PO Box正则表达式帮助匹配尾随数字
我有以下来自正则表达式库的正则表达式,它很好地捕捉了一些PO-Box变体。它唯一没有做的就是匹配尾随数字: 邮政信箱123 任何人都可以帮助修改这个正则表达式,使其也匹配尾随数字吗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,它接受了它,以
\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
)。