英国邮政编码的正则表达式
我正在制作一个应用程序,要求用户输入邮政编码,如果有效则输出邮政编码。
我找到了以下模式,它可以正常工作:
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})";
我对正则表达式知之甚少,如果有人能通过这个声明与我说话,那就太棒了。 我主要是不明白的?
和()
使用。
你的正则表达式有以下几点:
-
^
和$
– 用于指示匹配输入的开始和结束的锚点。 -
[A-PR-UWYZ]
– A到P或R到U或W,Y,Z之间的任何字符。 方括号中的字符形成一个字符类,它允许任何包含的字符和-
用于表示像[AD]允许A,B,C或D的字符序列。 -
([0-9]|[A-HJKSTUW])?
– 0-9中的可选字符或[A-HJKSTUW]指示的字符。?
使前一部分可选。|
用于OR
。()
将两部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]
的? 意味着出现0或1次,并且括号按照您的预期进行分组,修饰符将对组起作用。 正则表达式教程可能是最好的
http://www.vogella.com/articles/JavaRegularExpressions/article.html
我有一个简短的外观,这对于练习/游戏看起来也很合理
http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html
简单的例子(ab)?
意味着’ab’一次或根本不意味着’ab’