регулярное выражение для соответствия пустой (или всем пробелам) строке - PullRequest
5 голосов
/ 02 декабря 2009

Я хочу сопоставить строку, которая может иметь любые типы символов пробела (в частности, я использую PHP). или любой способ узнать, является ли строка пустой или имеет только пробел, также поможет!

Ответы [ 7 ]

17 голосов
/ 02 декабря 2009

Для этого вам не нужны регулярные выражения, просто используйте:

if ( Trim ( $str ) === '' ) echo 'empty string';
8 голосов
/ 02 декабря 2009

Проверка длины обрезанной строки или сравнение обрезанной строки с пустой строкой, вероятно, является самой быстрой и легкой для чтения, но в некоторых случаях вы не можете ее использовать (например, при использовании инфраструктуры проверка, которая принимает только регулярное выражение).

Поскольку никто еще не опубликовал рабочее регулярное выражение ...

if (preg_match('/\S/', $text)) {
    // string has non-whitespace
}

или

if (preg_match('/^\s*$/', $text)) {
    // string is empty or has only whitespace
}
2 голосов
/ 02 декабря 2009
if (preg_match('^[\s]*$', $text)) {
    //empty
} 
else {
    //has stuff
}

но вы также можете сделать

if ( trim($text) === '' ) {
    //empty
}

Редактировать: обновленное регулярное выражение для соответствия действительно пустой строке - за ник (спасибо!)

1 голос
/ 02 декабря 2009
if(preg_match('^[\s]*[\s]*$', $text)) {
    echo 'Empty or full of whitespaces';
}

^ [\ s] * означает, что текст должен начинаться с нуля или более пробелов, а [\ s] * $ означает, что должен заканчиваться нулем или больше пробелов, поскольку выражения «ноль или более», он также соответствует пустым строкам .

0 голосов
/ 07 октября 2015

Следующее регулярное выражение проверяет утверждение lookahead и lookbehind, содержит ли строка пробел в начале или в конце или строка пуста или содержит только пробел:

/^(?!\s).+(?<!\s)$/i

недействительно (внутри "):

""
" "
" test"
"test "

Действителен (внутри "):

"t"
"test"
"test1 test2"
0 голосов
/ 02 декабря 2009

Вам не нужно регулярное выражение

if($str == '') { /* empty string */ }
elseif(trim($str) == '') { /* string of whitespace */ }
else { /* string of non-whitespace */ }
0 голосов
/ 02 декабря 2009

Выражение \A\s*+\Z

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...