我正在寻找匹配的正则表达式,它在文本之间不包含空格,但在文本的开头或结尾可能有也可能没有空格。
答案 0 :(得分:15)
你想要这样的东西:(see it in action on rubular.com):
^\s*\S+\s*$
说明:
^
是字符串锚$
是字符串锚\s
是空格的字符类\S
是对\s
的否定(请注意大小写差异)*
是“零或多”重复+
是“一次或多次”重复上面的模式 NOT 匹配,比方说是一个空字符串。如果这是预期的行为,原始规范不是很清楚,但如果允许空的“文本”,则只需使用\S*
,即匹配零 - 或更多(而不是一次 - 或者更多 - 重复\S
。
因此,此模式(与*
除外,与+
相同而不是^\s*\S*\s*$
)
\S
将匹配:
上述模式使用" #@^$^* "
来定义“文本”字符,即除了空格之外的任何字符。这包括标点符号和符号之类的内容,即字符串" ==== AWESOMENESS ==== "
匹配两种模式。目前尚不清楚这是否是所需的行为,即/^[^a-z]*[a-z]*[^a-z]*$/i
可能是理想的匹配
即使对于这种情况,模式仍然有效,我们只需要更具体地使用我们的字符类定义。
例如,这种模式:
==== AWESOMENESS ====
==== NOT AWESOME ====
但不是:
^
请注意,/i
元字符在用作字符类定义中的第一个字符时,不再意味着字符串锚点的开头,而是意味着字符类的否定定义
还要注意在模式中使用(?i)
修饰符:这会启用不区分大小写的匹配。实际语法可能因语言/口味而异。
答案 1 :(得分:2)
刚发现自己回答。所以我在这里写它,这样对其他人可能会有所帮助。
^\s*\S*\s*$
答案 2 :(得分:1)
这应该这样做:
^\s*\S+\s*$
" aaadadadad "
=>匹配" aaa aaaaa "
=>