регулярное выражение в соответствии с пустой (или все пробелы) строкой

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

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

if ( Trim ( $str ) === '' ) echo 'empty string'; 

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

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

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

или

 if (preg_match('/^\s*$/', $text)) { // string is empty or has only whitespace } 
 if (preg_match('^[\s]*$', $text)) { //empty } else { //has stuff } 

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

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

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

 if(preg_match('^[\s]*[\s]*$', $text)) { echo 'Empty or full of whitespaces'; } 

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

Вам действительно не нужно регулярное выражение

 if($str == '') { /* empty string */ } elseif(trim($str) == '') { /* string of whitespace */ } else { /* string of non-whitespace */ } 

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

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

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

 "" " " " test" "test " 

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

 "t" "test" "test1 test2" 

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