至少包含一个非空格字符

8

str必须为true,如果它至少有一个非空白字符被括号包含:

str = (a)
str = ( as bs)
str = (as e)

如果字符串中存在非空格字符,则返回false。
str = (   )

我不确定我是否能够做到这一点,但是这个条件也通过了 0 非空格字符。请纠正它。
/^\([\S+\s*]+\)$\.test(str)/

你的意思是第一行至少有一个非空格字符吗? - Rohit Jain
1
你逃避了最后一个括号,但没有逃避第一个。 - alergy
你的意思是相反的,当至少有一个非空格时必须为真,当全部为空格时必须为假吗? - Ibrahim Najjar
它在我的代码中运行良好,我认为它只适用于JavaScript? - user2454455
@fireflieslive。我给你的链接只适用于JS。看看吧。如果它在你的代码中能够正常工作,虽然我怀疑,那就没问题了。 - Rohit Jain
3个回答

7
你可以使用这个:
/^\(.*\S.*\)$/.test(str)

这会匹配任何字符,然后是非空白字符(这至少包括一个非空白字符),接着再匹配到结尾。


我对这个感到困惑。难道第一个 .* 不会匹配整个字符串,然后剩下的字符就没有匹配 \S 的机会了吗?还是我对正则表达式的工作原理理解有误?它是在进行某种隐式的向前查找吗? - undefined

0

假设 str 必须满足 TRUE 和 FALSE,且嵌套隐式不允许。

 ^(?:[^()]*\([^\S()]*[^\s()][^\S()]*\))+[^()]*$

扩展

 ^ 
 (?:
      [^()]* 
      \(
          [^\S()]* 
          [^\s()] 
          [^\S()]* 
      \)
 )+
 [^()]* 
 $ 

0
你可以使用以下内容:
^\((?!\s*\)).+\)$

这个正则表达式匹配一个开括号 (,然后如果其后紧跟着空格和一个闭括号 ),则匹配失败;否则将匹配整行文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接