需要允许具有3个特殊字符的字母数字的模式 - 。空白

时间:2011-09-06 12:32:35

标签: java regex

我需要验证一个地址字段,该字段可以包含带有-.和空格的字母数字字符。第一个字符不应为-.。也不允许重复的特殊字符(-- -. ..)。我试过这种模式但没有用

Pattern.compile("^[a-zA-Z0-9-\\.\\s]*$")

请提供符合此A-133 Rock Appt.

字符串的模式

2 个答案:

答案 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]