英国邮政编码的正则表达式

时间:2013-02-21 09:18:34

标签: java regex postal-code

我正在制作一个应用程序,要求用户输入邮政编码,如果有效则输出邮政编码。

我找到了以下模式,它可以正常工作:

String pattern = "^([A-PR-UWYZ](([0-9](([0-9]|[A-HJKSTUW])?)?)|([A-HK-Y][0-9]([0-9]|[ABEHMNPRVWXY])?)) [0-9][ABD-HJLNP-UW-Z]{2})"; 

我对正则表达式知之甚少,如果有人能通过这个声明与我说话,那将会很棒。我主要不理解?和使用()

2 个答案:

答案 0 :(得分:2)

?意味着出现0或1次,并且括号按照您的预期进行分组,修饰符将对组起作用。正则表达式教程可能是最好的事情

http://www.vogella.com/articles/JavaRegularExpressions/article.html

我有一个简短的外观,对于练习/游戏看起来也很合理看到这个小程序

http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html

简单的例子(ab)?

表示'ab'一次或根本不表示

答案 1 :(得分:2)

你的正则表达式有以下几点:

  • ^$ - 用于指示匹配输入的开始和结束的锚点。
  • [A-PR-UWYZ] - A到P或R到U或W,Y,Z之间的任何字符。方括号中的字符组成一个字符类,允许任何包含的字符,-用于表示[A-D]允许A,B,C或D的字符序列。
  • ([0-9]|[A-HJKSTUW])? - 0-9中的可选字符或[A-HJKSTUW]指示的字符。 ?使前一部分可选。 |适用于OR()将这两部分合并为OR。在这里,您可以使用[0-9A-HJKSTUW]代替此。
  • [ABD-HJLNP-UW-Z]{2} - 由字符类允许的字符组成的长度为2的序列。 {2}表示长度2.因此[ABD-HJLNP-UW-Z]{2}相当于[ABD-HJLNP-UW-Z][ABD-HJLNP-UW-Z]