0

我想匹配任何可以由一个或多个点分隔的字母数字:

  1. 伯蒂
  2. 伯特.123
  3. 伯特.01.03.27

但不是 :

  1. .bert(点不分离)
  2. 伯特123。(点不分离)
  3. bert...123(点的多次连续出现)

现在我有了这个^[^\\.][\w\.]+?[^\\.]$,但仍然无法处理点字符的多次连续出现。

4

5 回答 5

2

你想要的是^\w++(\.\w++)*$

至少一个字母数字字符,后跟任意数量的组,只有一个点,后跟至少一个字母数字字符。

于 2013-11-08T09:59:01.763 回答
1

这应该有效:

^(\w+\.)*\w+$

如果你愿意,你可以\w用更严格的东西代替(例如,[a-z]

于 2013-11-08T09:58:30.700 回答
0

我认为这应该有效

boolean ok = !str.matches(".*[^0-9a-zA-Z.].*|\\..*|.*\\.|.*\\.{2,}.*")
于 2013-11-08T09:55:39.563 回答
0

试试这个(不确定它是否是你想要的......):

Pattern p = Pattern.compile("^[^\\.][\\w\\.]+[^\\.]$");
于 2013-11-08T09:55:56.200 回答
0
Pattern dotSeparated = Pattern.compile("^\\w+(\.\w+)*$");  

如果需要,请替换\w[A-Za-z0-9]or \\p{Alnum},因为\w也允许使用下划线。

这匹配一个或多个字母数字字符,后跟零个或多个 [一个点,后跟一个或多个字母数字字符]。

于 2013-11-08T10:04:04.510 回答