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

RKo*_*dla 7 java regex

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

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

要测试的字符串 - 邮政信箱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());
Run Code Online (Sandbox Code Playgroud)

我已经在http://regex101.com/上在线测试了这个表达式,它说测试字符串是匹配的

Ste*_*han 5

像这样改变你的模式:

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

如果您知道自己不会经常使用您的模式,则可以尝试以下操作:

String myInput = ....

if (myInput.matches(spattern)) {
     // myInput is a PO BOX ...
} else {
     // myInput isn't a PO BOX ...
}
Run Code Online (Sandbox Code Playgroud)