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

Я пытаюсь определить, вводит ли пользователь пробел в текстовом поле:

 var regex = "^\s+$" ; 
 if($("#siren").val().match(regex)) {
     echo($("#siren").val());
     error+=1;
    $("#siren").addClass("error");
    $(".div-error").append("- Champ Siren/Siret ne doit pas etre vide<br/>");
 }

if($("#siren").val().match(regex)) должен соответствовать строке пробела, однако, похоже, что он не работает, что я делаю неправильно?

Спасибо за помощь

Ответ 1

\ (обратная косая черта) в вызове .match неправильно экранируется. Однако было бы проще использовать литерал регулярного выражения. Либо будет работать:

var regex = "^\\s+$";
var regex = /^\s+$/;

Также обратите внимание, что для + потребуется хотя бы одно пространство. Вы можете использовать *.

Ответ 2

Если вы используете jQuery, у вас есть .trim().

if ($("#siren").val().trim() == "") {
  // it empty
}

Ответ 3

Если вы ищете пустую строку в дополнение к пробелу, который вы использовали, чтобы использовать *, а не +

var regex = /^\s*$/ ;
                ^

Ответ 4

http://jsfiddle.net/DqGB8/1/

Это мое решение

var error=0;
var test = [" ", "   "];
 if(test[0].match(/^\s*$/g)) {
     $("#output").html("MATCH!");
     error+=1;
 } else {
     $("#output").html("no_match");
 }

Ответ 5

Имел подобную проблему, искал пробелы в строке, решение:

  • Для поиска 1 пробела:

    var regex = /^.+\s.+$/ ;
    

    example: "user last_name"

  • Для поиска нескольких пробелов:

    var regex = /^.+\s.+$/g ;
    

    пример: "фамилия пользователя"