web-dev-qa-db-ja.com

空ではなく空白ではないための正規表現

文字列パターンに空白が含まれているか空の場合にfalseを返す正規表現を作成しようとしています。これまでのところ私はこれを持っています

[^\s] 

これにより、文字列に空白が含まれていないことを確認できますが、空でないことを確認する方法もわかりません。任意の助けをいただければ幸いです。

28
medium

/^$|\s+/これが一致した場合、空白または空があります。

40
Jan.

ほとんどの正規表現エンジンは、「カウンターパート」エスケープシーケンスをサポートしています。つまり、\s(空白)には、そのカウンター部分\S(非空白)があります。

これを使用して、^\S+$で少なくとも1つの非空白文字があるかどうかを確認できます。

PHP これらのエスケープシーケンスがいくつかあります

15
Linus Kleen

私の理解では、空ではなく空ではない文字列を一致させたいので、一番上の答えは反対です。私は提案します:

(.|\s)*\S(.|\s)*

-これは、少なくとも1つの非空白文字(\S 途中で)。任意の文字または空白シーケンス(改行を含む)を前後に付けることができます-(.|\s)*

https://regex101.com/ の説明で試すことができます。

13
Tony

私は最終的に受け入れられた答えに似たものを使用しましたが、小さな修正を加えました

(^$)|(\s+$)

Expresso による説明

 2つの選択肢から選択します(^ $)
 [1]番号付きのキャプチャグループ^ $ 
行の始まり^ 
行の終わり$ 
 [2]キャプチャされた番号付きグループ(\ s + $)
空白、1回以上の繰り返し\ s + 
行末$ 
5
oleksii

少し遅れましたが、空または空白に0の一致を返す正規表現があります。

/^(?!\s*$).+/

これは regex101 でテストできます

2
Truchainz