我需要验证一个地址字段,该字段可以包含带有-
,.
和空格的字母数字字符。第一个字符不应为-
或.
。也不允许重复的特殊字符(--
-.
..
)。我试过这种模式但没有用
Pattern.compile("^[a-zA-Z0-9-\\.\\s]*$")
请提供符合此A-133 Rock Appt.
答案 0 :(得分:3)
^\w++(?:[.\s-](?![.\s-])|\w++)*$
执行此操作(将用于Java字符串的反斜杠加倍)。
<强>解释强>
^ # Start of string
\w++ # Match one or more alnum characters, possessively
(?: # Match either
[.\s-] # a single "special" character
(?![.\s-]) # aserting that it's really single
| # or
\w++ # one or more alnum characters, possessively
)* # zero or more times
$ # End of string
如果字符串不匹配,占有量词(++
)可以帮助正则表达式更快地失败。
答案 1 :(得分:1)
答案1是正确的,如果也允许使用下划线。答案1的Regexp也接受:
_A-133 Rock Appt.
如果不允许使用下划线,请将\w
替换为[a-z0-9A-Z]