我正在制作一个应用程序,要求用户输入邮政编码并在邮政编码有效时输出。
我发现了以下模式,它可以正常工作:
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})";
我对正则表达式知之甚少,如果有人能通过这个声明告诉我,那就太好了。我主要不明白?
.()
我正在制作一个应用程序,要求用户输入邮政编码并在邮政编码有效时输出。
我发现了以下模式,它可以正常工作:
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})";
我对正则表达式知之甚少,如果有人能通过这个声明告诉我,那就太好了。我主要不明白?
.()
这 ?mean 出现 0 次或 1 次,并且括号会按照您的预期进行分组,修饰符将在组上起作用。正则表达式教程可能是这里最好的东西
http://www.vogella.com/articles/JavaRegularExpressions/article.html
我看了一眼,这对于练习/游戏来说似乎也是合理的,请参阅这个小程序
http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html
简单的例子(ab)?
表示“ab”一次或根本不表示
您的正则表达式具有以下内容:
^
和$
- 用于指示匹配输入的开始和结束的锚。[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
编辑的两个部分。在这里你可以用[0-9A-HJKSTUW]
这个来代替。[ABD-HJLNP-UW-Z]{2}
- 由字符类允许的字符组成的长度为 2 的序列。{2}
表示长度为2。所以[ABD-HJLNP-UW-Z]{2}
等价于[ABD-HJLNP-UW-Z][ABD-HJLNP-UW-Z]