Ответ 1
Вместо проверки всей строки, чтобы увидеть, есть ли только пробел, просто проверьте, есть ли хотя бы один символ без пробелов:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
Каков наилучший способ проверить, содержит ли строка только пробелы?
Строка может содержать символы, объединенные с пробелом, но не просто пробельные символы.
Вместо проверки всей строки, чтобы увидеть, есть ли только пробел, просто проверьте, есть ли хотя бы один символ без пробелов:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
if (/^\s+$/.test(myString))
{
//string contains only whitespace
}
это проверяет наличие 1 или более пробельных символов, если вы также должны соответствовать пустой строке, затем замените +
на *
.
Простой ответ, если ваш браузер поддерживает функцию trim()
if (myString && !myString.trim()) {
//First condition to check if string is not empty
//Second condition checks if string contains just whitespace
}
Хорошо, если вы используете jQuery, это проще.
if ($.trim(val).length === 0){
// string is invalid
}
Просто проверьте строку на этом регулярном выражении:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
Регулярное выражение, в котором я закончил использование, когда я хочу разрешить пробелы в середине моей строки, но не в начале или конце, был следующим:
[\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
}
Я использовал следующий метод, чтобы определить, содержит ли строка только пробел. Это также соответствует пустым строкам.
if (/^\s*$/.test(myStr)) {
// the string contains only whitespace
}
isEmptyOrSpaces(str){
return str || str.trim() === '';
}