答案 0 :(得分:4)
您的正则表达式^[^\s]*.*[^\s]*$
不起作用,因为您将*
量词应用于匹配任何符号但空白的[^\s]
否定字符类,从而使此可选。此外,您的输入看起来是多行的,因此在在线正则表达式测试器中,您需要指定/m
多项标志以查看这些行是否与您的模式匹配。此外,模式要求输入字符串中至少包含两个符号,但您还有a
行(包含1个符号) - 并且它不会匹配。
您可以使用
^(?!\s|.*\s$).*$
请参阅regex demo。请注意使用/m
多行标记(如果您的输入是多行,则必需)。此模式允许任何不以空格开头或结尾的字符串。
更详细的解释:
^
- 开始行(?!\s|.*\s$)
- 如果字符串开始(由于第一个\s
)或(|
)结束(由于.*\s$
)而导致匹配失败的否定前瞻空白.*$
- 实际上匹配到最后的一行。答案 1 :(得分:3)
尝试正则表达式:^\S+(.*\S+)?$
。
\s
是一个包含空格的字符类。 \S
是被否定的阶级。它代表非空白。 ^
在一行开头匹配。^\S+
匹配行开头的一个或多个非空格(.*\S+)?
:
\S+
又是一个或多个非whitspaces (...)?
问号使得括号内的部分可选。这使得行a
匹配。$
表示"在一行"。