如何为主机名构建正则表达式?

时间:2014-10-29 10:00:50

标签: java regex ip

需要为以下内容构建正则表达式:

x.x.x.x

上面代表一些主机名,其中 x 可以是一组字符/数字,且必须只有3个点。

我尝试了一些事情,但在某些情况下失败了。

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

String regex = "[a-z0-9]+[\\.]{1}[a-z0-9]+[\\.]{1}[a-z0-9]+[\\.]{1}[a-z0-9]+";

说明:

  • [a-z0-9]+匹配一组或多个长度为1的字符/数字。
  • [\\.]{1}只匹配一个.个sympol。 {1}表示长度为1,但您也可以使用[.]\\.
  • 上述两条规则重复多次

正如@Calvin Scherle所提到的,你可以将正则表达式缩短为:

String regex = "\\w+\\.\\w+\\.\\w+\\.\\w+";

说明:

  • \w+将匹配每组单词字符(包括字母和数字),最小长度为1
  • \.将与.符号
  • 匹配
  • 在Java中,\元字符,必须进行转义,因此我们会\\w+\\.
  • 上述两条规则重复多次

答案 1 :(得分:1)

您可以使用String.matches("[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+")

进行测试

它将匹配由3个点分隔的任何字母数字字符。

  • [a-zA-Z0-9]是与任何字母数字字符匹配的组。
  • +表示"寻找一个或多个出现"
  • \\.表示文字.字符

答案 2 :(得分:1)

试试这个:

String regex = "[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]+\\.[a-zA-Z0-9]"