Java 正则表达式不';我不尊重长度限制
我有以下Java正则表达式用于与用户名匹配:Java 正则表达式不';我不尊重长度限制,java,regex,Java,Regex,我有以下Java正则表达式用于与用户名匹配: ^(?!.*\\..*\\..*)[A-Za-z]([A-Za-z0-9.]*[A-Za-z0-9]){8,15}$ 我希望这个正则表达式与包含所有字母数字字符(从字母表开始)的字符串匹配,中间最多只有一个句点(点),大小在8到15之间。 因此,它有两个问题: 它不接受长度为8的字符串。它接受最小长度为9的字符串 长度没有上限。它与任何长度超过8个字符的字符串匹配 为什么它没有考虑到{8,15}?问题1:您正在量化至少需要一个[A-Za-z0-9]
^(?!.*\\..*\\..*)[A-Za-z]([A-Za-z0-9.]*[A-Za-z0-9]){8,15}$
<>我希望这个正则表达式与包含所有字母数字字符(从字母表开始)的字符串匹配,中间最多只有一个句点(点),大小在8到15之间。
因此,它有两个问题:
为什么它没有考虑到
{8,15}
?问题1:您正在量化至少需要一个[A-Za-z0-9]
的组,该组之前的[A-Za-z0-9.]
。因此已经需要至少8个字符。另外,您的正则表达式在此构造之前需要一个[A-Za-z]
,至少需要9个字符
问题2:您正在量化一个包含[a-Za-z0-9.]*
任何金额的组,而这个{8,15}
,因此上限为15x(任何金额)=∞
我猜你要找的正则表达式和这个很相似:
^(?![^.]*\\.[^.]*\\.)[A-Za-z](?:\\.?[A-Za-z0-9]){7,14}$
请给出一些要接受的示例。您应该将其添加为答案@BobbleBobble