正则表达式不匹配,如果它是一个空字符串

时间:2017-08-08 11:38:48

标签: javascript regex validation

目前,我使用/^[a-zA-Z.+-. ']+$/正则表达式来验证传入的字符串。

当传入的字符串为空或仅包含空格时,我希望代码抛出错误。

如何使用正则表达式检查空字符串?我找到了一些解决方案,但没有一个有用

3 个答案:

答案 0 :(得分:2)

使用以下正则表达式检查字符串是否为空:

/^ *$/

上面的正则表达式匹配字符串的开头(^),然后是任意数量的空格(*),然后是字符串的结尾($)。如果您希望匹配任何空格(标签等),则可以使用\s*代替*,使正则表达式如下:

/^\s*$/

答案 1 :(得分:1)

您可以使用

/^(?! *$)[a-zA-Z.+ '-]+$/

或 - 匹配任何空格

/^(?!\s*$)[a-zA-Z.+\s'-]+$/

如果字符串为空或仅包含空格,则(?!\s*$)否定前瞻将使匹配失败。

模式详情

  • ^ - 字符串开头
  • (?!\s*$) - 仅在字符串
  • 中没有空字符串或空格
  • [a-zA-Z.+\s'-]+ - 一个或多个字母,.+,空白,'-字符
  • $ - 字符串结束。

请注意,实际上,您也可以在此使用(?!\s+)预测,因为您的模式与空字符串不匹配,因为最后是+量词。

答案 2 :(得分:1)

要检查空的或仅限空格的字符串,您可以使用此正则表达式:/^\s*$/

示例:

function IsEmptyOrWhiteSpace(str) {
    return (str.match(/^\s*$/) || []).length > 0;
}

var str1 = "";
var str2 = " ";
var str3 = "a b";

console.log(IsEmptyOrWhiteSpace(str1)); // true
console.log(IsEmptyOrWhiteSpace(str2)); // true
console.log(IsEmptyOrWhiteSpace(str3)); // false