如何检查java正则表达式中只出现一次的特定字符
我有字母数字字符串,其中只有-是允许的特殊字符 我目前的正则表达式是^[a-zA-Z0-9][-.[a-zA-Z0-9]+$ 它接受字符串为Exam1,Exam1,Exam1.1 但是也在接受考试1,考试1..1如何检查java正则表达式中只出现一次的特定字符,java,regex,Java,Regex,我有字母数字字符串,其中只有-是允许的特殊字符 我目前的正则表达式是^[a-zA-Z0-9][-.[a-zA-Z0-9]+$ 它接受字符串为Exam1,Exam1,Exam1.1 但是也在接受考试1,考试1..1 如何使它只匹配一次特殊字符?首先让我解释一下正则表达式 ^[a-zA-Z0-9][-#._ a-zA-Z0-9 ]+$ 以字符a-z或a-z或0-9开头,后跟至少一个或多个后续字符 因此,将特殊字符[-.]移动到单独的字符类中,并用其他字符[-.\a-zA-Z0-9]包围它 我假设你
如何使它只匹配一次特殊字符?首先让我解释一下正则表达式
^[a-zA-Z0-9][-#._ a-zA-Z0-9 ]+$
以字符a-z或a-z或0-9开头,后跟至少一个或多个后续字符
因此,将特殊字符[-.]移动到单独的字符类中,并用其他字符[-.\a-zA-Z0-9]包围它
我假设你所说的意思是它们只能是一组特殊字符,下面的语句应该可以做到这一点: ^[a-zA-Z0-9][a-zA-Z0-9]*[-.]*[a-zA-Z0-9]* 我会把它分解: ^[a-zA-Z0-9]表示必须以一个字母数字字符开头 [a-zA-Z0-9]*表示可能有以下字母数字字符 [-.]*表示字符串中的某个位置可以有一系列特殊字符 [a-zA-Z0-9]*表示字符串可能以字母数字字符或特殊字符序列结尾 第一部分和第二部分很近,但不同,以防止在开始时放置空间 使用*将特殊字符序列包装为相同结构的事实允许它在任何地方
有些为什么不计算出现的次数?可能的重复如果不希望允许重复特殊字符,这种情况如何?例如,考试1.1考试1.1考试1.-1这个案子行吗?
^[a-zA-Z0-9][_a-zA-Z0-9 ]+[-#.]?[_a-zA-Z0-9 ]+$