我想匹配任何可以用一个或多个点分隔的字母数字:
但不是:
现在我有^[^\\.][\w\.]+?[^\\.]$
,但仍然无法处理点字符的多个连续出现。
答案 0 :(得分:1)
这应该有效:
^(\w+\.)*\w+$
如果您愿意,可以将\w
替换为更具限制性的内容(例如,[a-z]
)
答案 1 :(得分:1)
你想要的是^\w++(\.\w++)*$
至少一个字母数字字符,后跟任意数量的只有一个点的组,后跟至少一个字母数字字符。
答案 2 :(得分:0)
我认为这应该有用
boolean ok = !str.matches(".*[^0-9a-zA-Z.].*|\\..*|.*\\.|.*\\.{2,}.*")
答案 3 :(得分:0)
试试这个(不确定它是不是你想要的......):
Pattern p = Pattern.compile("^[^\\.][\\w\\.]+[^\\.]$");
答案 4 :(得分:0)
Pattern dotSeparated = Pattern.compile("^\\w+(\.\w+)*$");
如果需要,请将\w
替换为[A-Za-z0-9]
或\\p{Alnum}
,因为\w
也允许使用下划线。
这匹配一个或多个字母数字字符,后跟零点或多点[a点,后跟一个或多个字母数字字符]。