Regex для не пустых и не пропусков - PullRequest
28 голосов
/ 01 ноября 2011

Я пытаюсь создать регулярное выражение, которое будет возвращать false, если шаблон String содержит пробелы или является пустым. Пока у меня есть это

[^\s] 

Я думаю, что эта строка не будет содержать пробелов, но я не уверена, как проверить, чтобы она не была пустой. Любая помощь будет оценена.

Ответы [ 6 ]

39 голосов
/ 01 ноября 2011

/^$|\s+/ если это соответствует, есть пробел или его пуст.

14 голосов
/ 01 ноября 2011

Большинство механизмов регулярных выражений поддерживают escape-последовательности "counter part".То есть для \s (пробел) есть его противоположная часть \S (не пробел).

Используя это, вы можете проверить, есть ли хотя бы один небелыйпробел с ^\S+$.

PCRE для PHP имеет несколько из этих escape-последовательностей .

13 голосов
/ 29 августа 2017

В моем понимании вы хотите сопоставить непустую и непустую строку, поэтому верхний ответ делает противоположное. Я предлагаю:

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

- соответствует любой строке, содержащей хотя бы один непробельный символ (\S в середине). Ему может предшествовать и следовать что угодно, любая последовательность символов или пробелов (включая новые строки) - (.|\s)*.

Вы можете попробовать это с объяснением на https://regex101.com/.

5 голосов
/ 22 сентября 2014

Я закончил тем, что использовал что-то похожее на принятый ответ, с небольшими изменениями

(^$)|(\s+$)

Объяснение Expresso

Select from 2 alternatives (^$)
    [1] A numbered captured group ^$
        Beginning of line ^
        End of line $
    [2] A numbered captured group (\s+$)
        Whitespace, one or more repetitions \s+
        End of line $
2 голосов
/ 21 ноября 2018

Немного поздно, но вот регулярное выражение, которое я обнаружил, которое возвращает 0 совпадений для пустых или пробелов:

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

Вы можете проверить это в regex101

0 голосов
/ 01 ноября 2011

/^[\s]*$/ соответствует пустым строкам и строкам, содержащим только пробелы

...