Java 地址搜索排除特殊字符

Java 地址搜索排除特殊字符,java,Java,地址只能包含字母、数字、%和一个破折号(-),不允许使用所有其他特殊字符。单破折号(-)只能位于2个数字之间。%符号可以位于地址中的任何位置,并且可以多次出现 Valid: 1-10 Downing Street Valid: Downing Street 1-10 Valid: Downing Street Valid: Downing% Valid: %Downing Street Valid: %Dow%ng Street Invalid: -10 Downing

地址只能包含字母、数字、%和一个破折号(-),不允许使用所有其他特殊字符。单破折号(-)只能位于2个数字之间。%符号可以位于地址中的任何位置,并且可以多次出现

Valid:   1-10 Downing Street
Valid:   Downing Street 1-10
Valid:   Downing Street
Valid:   Downing%
Valid:   %Downing Street
Valid:   %Dow%ng Street
Invalid: -10 Downing Street
我正在使用Java模式和Matcher来验证地址。非常感谢您的帮助。

试试这个正则表达式:

"[%\\w][%\\w ]+( \\d+-?\\d+)?|(\\d+-?\\d+ )?[%\\w][%\\w ]+"

干杯,这正是我所要求的,对要求稍作修改,tho:-)。只有字母是有效的,没有数字,即唐宁街。测试的“唐宁街”。匹配(\\w[\\w]+\\d+-?\\d+\\d+\d+-?\\d+\\w[\\w]+);给我假消息。你是说这是错的?“唐宁街”应该是真的。当我第一次输入我的问题时,我没有指定这一点。请将正则表达式更改为同时允许%符号放置在任何位置并允许多次出现?您能给我一些有效的例子吗(使用%)?我尝试过“[\*\\\>\\\$\\!\\\\\\!\\\\!\\:\\\\=\\\\\\\\&\\\\,\\\\)\\\(\\\\\\\\\\[\\\\\[\\\]]”排除某些字符。您应该编辑您的问题,并解释您尝试了什么以及为什么它不是您想要的。。。