Как я могу проверить, содержит ли строка символы и пробелы, а не только пробелы? - PullRequest
117 голосов
/ 09 января 2010

Как лучше всего проверить, содержит ли строка только пробел?

Строка может содержать символы вместе с пробелами, но не просто пробелы.

Ответы [ 8 ]

269 голосов
/ 09 января 2010

Вместо проверки всей строки, чтобы увидеть, есть ли только пробелы, просто проверьте, есть ли хотя бы один символ не пробела:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}
31 голосов
/ 09 января 2010
if (/^\s+$/.test(myString))
{
      //string contains only whitespace
}

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

24 голосов
/ 09 марта 2015

Самый простой ответ, если ваш браузер поддерживает функцию trim()

if (myString && !myString.trim()) {
    //First condition to check if string is not empty
    //Second condition checks if string contains just whitespace
}
17 голосов
/ 07 июля 2011

Ну, если вы используете jQuery, это проще.

if ($.trim(val).length === 0){
   // string is invalid
} 
6 голосов
/ 09 января 2010

Просто проверьте строку с этим регулярным выражением:

if(mystring.match(/^\s+$/) === null) {
    alert("String is good");
} else {
    alert("String contains only whitespace");
}
1 голос
/ 09 января 2010
if (!myString.replace(/^\s+|\s+$/g,""))
  alert('string is only whitespace');
0 голосов
/ 15 февраля 2019

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

if (/^\s*$/.test(myStr)) {
  // the string contains only whitespace
}
0 голосов
/ 14 июля 2010

Регулярное выражение, которое я использовал в конце, когда я хочу разрешить пробелы в середине моей строки, но не в начале или конце, было таким:

[\S]+(\s[\S]+)*

или

^[\S]+(\s[\S]+)*$

Итак, я знаю, что это старый вопрос, но вы могли бы сделать что-то вроде:

if (/^\s+$/.test(myString)) {
    //string contains characters and white spaces
}

или вы можете сделать то, что сказал nickf и использовать:

if (/\S/.test(myString)) {
    // string is not empty and not just whitespace
}
...