我试图得到一个正则表达式,将检测字符串中是否有双重空格。但如果它确实检测到一个双重空格,它将返回false。因此,除了两个并排的空格外,字符串中的其他任何内容都是有效的。在下面的示例中,下划线(_)是空格。
'Hello_World'==>有效
'Hello__World'==>无效
'Hello___World'==>无效
'1_2_3_4_5'===>有效
'1_2_3__4_5'==>无效
这是我现在的正则表达式
/^([^/s/s]*)$/
而不是关注2个空间不是什么,而是使用负面的预测它是什么:
^(?!.* ).+
或者如果第一个和最后一个必须是非空格(未说明):
^\S((?!.* ).*\S)?$
这也允许1个非空格作为整个输入。
使这项工作的主要原因是这个表达式^(?!.* )
,负面的前瞻(?!.* )
锚定到^
开始输入。它断言,在不消耗输入的情况下,当前点之后的文本与给定表达式不匹配,在本例中为".* "
(为了清晰起见而添加引号),即“任何两个空格”。换句话说,“此后的任何一点都不会出现两个空格”。
第二个选项可能是^\S(?!.* ).*\S$
写的 - 与第一个选项相同,但两端都有\S
,但由于\S
消耗输入,因此每个端点需要不同的字符,所以它不匹配单个字母,例如"X"
。我制作除第一个选项之外的所有字符,它允许单个字符通过(根据您的要求),同时保留两个空格的防止。