java - 匹配邮政信箱地址的正则表达式

标签 java regex

我正在使用这个正则表达式来捕获“PO Box”字符串。当我在线测试时这似乎有效,但下面的 javacode 打印错误。我犯了什么错误?

/^\s*((P(OST)?.?\s*(O(FF(ICE)?)?)?.?\s+(B(IN|OX))?)|B(IN|OX))/i

要测试的字符串 - PO Box 1234

    String spattern = "/^\\s*((P(OST)?.?\\s*(O(FF(ICE)?)?)?.?\\s+(B(IN|OX))?)|B(IN|OX))/i";

    String regex = "PO Box 1234";

    Pattern pattern = Pattern.compile(spattern);

    System.out.println(pattern.matcher(regex).matches());

我在 http://regex101.com/ 在线测试了表达式并且它说有匹配的测试字符串

最佳答案

像这样改变你的模式:

String spattern = "(?i)^\\s*((P(OST)?.?\\s*(O(FF(ICE)?)?)?.?\\s+(B(IN|OX))?)|B(IN|OX))";

如果你知道你不会经常使用你的模式,你可以试试这个:

String myInput = ....

if (myInput.matches(spattern)) {
     // myInput is a PO BOX ...
} else {
     // myInput isn't a PO BOX ...
}

关于java - 匹配邮政信箱地址的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175332/

相关文章:

c# - .NET 正则表达式无法识别的分组构造

jquery - JQuery 中电话的正则表达式和匹配

java - 如何去除字符串中除第一个字符以外的所有非数字?

java - 在 true 或 if 循环中更改 ImageView?

java - JBoss 上未生成线程转储

java - Java中闭包的当前状态是什么?

c# - 正则表达式 .net 拆分

java - 如何将此 MD5 编码 PHP 转换为 java

javascript - 选择不是开始于但结束于之间的所有内容

regex - grep 前 n 行,只返回文件名