可以包含字母数字字符但不能包含除 | 之外的任何内容的正则表达式

验证邮政编码时,我试图检查邮政编码是否可以包含字母数字且仅包含字符-,|和  (空格)。

我正在检查

"34343-1232".matches("(?!|| |-|[0-9])"))

但这不起作用。有没有最佳方法来做到这一点?


慕无忌1623718
浏览 188回答 3
3回答

牛魔王的故事

允许使用简单的邮政编码(例如 12345)并强制规定,如果找到可接受的分隔符(空格、逗号、管道),它必须以四位数字结尾,这个正则表达式就足够了。[0-9]{5}(?:[-,| ][0-9]{4})?

幕布斯7119047

我不知道您所在国家/地区的确切邮政编码规则,但此代码段将帮助您入门:// define the pattern - should be defined as class field// instead of + you could use {3,5} to match min. 3, max. 5 characters - see regular expressions manualprivate static final Pattern PATTERN_ZIP = Pattern.compile("^[0-9A-Z]+[ \\-\\|]?[0-9A-Z]+$");String zip = "1A2-3B4C5";// Optional: let's make some text cleaningString cleanZip = zip.toUpperCase().trim();// Do the mat(c)hMatcher m = PATTERN_ZIP.matcher(cleanZip);if (m.find()) {    System.out.println("Zip code correct");} else {    System.out.println("Zip code incorrect");}

浮云间

您不需要负前瞻,您可以使用字符类 ( []) 代替|运算符,并且您希望使用^和$来表示字符串的开头和结尾。像这样:"34343-1232".matches("^[0-9| -]+$")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java