正则表达式检测双空格

问题描述 投票:-1回答:1

我试图得到一个正则表达式,将检测字符串中是否有双重空格。但如果它确实检测到一个双重空格,它将返回false。因此,除了两个并排的空格外,字符串中的其他任何内容都是有效的。在下面的示例中,下划线(_)是空格。

'Hello_World'==>有效

'Hello__World'==>无效

'Hello___World'==>无效

'1_2_3_4_5'===>有效

'1_2_3__4_5'==>无效

这是我现在的正则表达式

/^([^/s/s]*)$/

regex double spaces
1个回答
0
投票

而不是关注2个空间不是什么,而是使用负面的预测它是什么:

^(?!.*  ).+

或者如果第一个和最后一个必须是非空格(未说明):

^\S((?!.*  ).*\S)?$

这也允许1个非空格作为整个输入。


使这项工作的主要原因是这个表达式^(?!.* ),负面的前瞻(?!.* )锚定到^开始输入。它断言,在不消耗输入的情况下,当前点之后的文本与给定表达式不匹配,在本例中为".* "(为了清晰起见而添加引号),即“任何两个空格”。换句话说,“此后的任何一点都不会出现两个空格”。

第二个选项可能是^\S(?!.* ).*\S$写的 - 与第一个选项相同,但两端都有\S,但由于\S消耗输入,因此每个端点需要不同的字符,所以它不匹配单个字母,例如"X"。我制作除第一个选项之外的所有字符,它允许单个字符通过(根据您的要求),同时保留两个空格的防止。

© www.soinside.com 2019 - 2024. All rights reserved.