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