正则表达式检测双空格

时间:2017-12-21 22:44:29

标签: regex double spaces

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

'程序hello_world' ==>有效

' Hello__World' ==>无效

'你好___世界' ==>无效

' 1_2_3_4_5' ===>有效

' 1_2_3__4_5' ==>无效

这是我现在的正则表达式

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

2 个答案:

答案 0 :(得分:0)

不要只关注不是的2个空格,而是使用负面的预测

^(?!.*  ).+

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

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

其中也只允许1个非空格作为整个输入。

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

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

答案 1 :(得分:0)

你可以使用类似的东西

^(\S\s{0,1})*\S$