Java 正则表达式:用连字符替换空格,并且只允许a-z

Java 正则表达式:用连字符替换空格,并且只允许a-z,java,regex,Java,Regex,我在和regex打交道 如何用连字符替换空格,并且只允许a-z符号 public String filterSpeciesName(String species) { return species.replaceAll("[^a-zA-Z]", "").toLowerCase(); } 例如 input string "Bar''r$ack Put1in" output string "barrack-putin" 若要用连字符替换任何空格字符,请使用String#replaceAl

我在和regex打交道

如何用连字符替换空格,并且只允许a-z符号

public String filterSpeciesName(String species) {
    return species.replaceAll("[^a-zA-Z]", "").toLowerCase();
}
例如

input string "Bar''r$ack Put1in"
output string "barrack-putin"

若要用连字符替换任何空格字符,请使用
String#replaceAll(“\\s”、“-”)

然后,如果您只想删除不是
a-z
的字符,请使用
replaceAll(“[^a-zA-z-]”,“)
,假设您不想删除新添加的连字符:)

但我更愿意建议你也许只是:

  • 匹配如果
    species.replaceAll(“\\s”,““-”)匹配
    匹配^[a-zA-Z-]+$
  • 如果不是这种情况,则抛出
    异常
  • 否则返回格式化值

事实上,你不需要正则表达式。简单的字符串替换通常更简单、更快。
return species.trim().replaceAll("\\s", "-").replaceAll("[^a-zA-Z-]", "").toLowerCase();