Java 需要模式,允许字母数字与3个特殊字符-。空白

Java 需要模式,允许字母数字与3个特殊字符-。空白,java,regex,Java,Regex,我需要验证一个地址字段,该字段可以包含带有-、和空格的字母数字字符。第一个字符不应是-或。也不允许重复使用特殊字符(---..)。我试过这种模式,但没有用 Pattern.compile("^[a-zA-Z0-9-\\.\\s]*$") 请为我提供匹配字符串的图案,如A-133 Rock Appt. ^\w++(?:[.\s-](?![.\s-])|\w++)*$ 这样做(在Java字符串中使用两倍的反斜杠) 说明: ^ # Start of string \w++

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

Pattern.compile("^[a-zA-Z0-9-\\.\\s]*$")
请为我提供匹配字符串的图案,如
A-133 Rock Appt.

^\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
如果字符串不匹配,所有格量词(
++
)有助于正则表达式更快地失败

这样做(在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的Regexp也接受:

_A-133 Rock Appt.

如果不允许使用下划线,则将
\w
替换为
[a-z0-9A-Z]

如果也允许使用下划线,则回答1是正确的。答案1的Regexp也接受:

_A-133 Rock Appt.

如果不允许使用下划线,请将
\w
替换为
[a-z0-9A-Z]

请复制/粘贴实际代码(并在编辑器中在其前面放置四个空格)请复制/粘贴实际代码(并在编辑器中在其前面放置四个空格)