Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查java正则表达式中只出现一次的特定字符_Java_Regex - Fatal编程技术网

如何检查java正则表达式中只出现一次的特定字符

如何检查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]+$

它接受字符串为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-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 ]+$