2017-08-08 155 views
2

目前,我正在使用/^[a-zA-Z.+-. ']+$/正则表达式来验证传入的字符串。正则表达式不匹配,如果它是一个空字符串

当传入的字符串为空或只包含空白时,我想代码抛出一个错误。

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

+0

'如果(?string.match(/^\ S = * $ /克)。长度> 0)//未valid' – Patrick2607

+0

请不要使用当这个问题中的代码与此无关时,jQuery Validate标记 插入。编辑。谢谢。 – Sparky

回答

1

您可以使用

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

或 - 匹配任何空白

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

如果字符串为空或只包含空格的(?!\s*$)负先行将失败的比赛。

图案的详细资料

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

注意,其实,你也可以在这里使用(?!\s+)前瞻,因为你的模式没有一个空字符串由于在年底+量词匹配。

+1

感谢您的解释@WiktorStribiżew – Harsha

+0

其完美契合我的代码 – Harsha

3

检查如果字符串是空的或者是不使用以下正则表达式:

/^ *$/ 

正则表达式上面的字符串(^)的起始匹配,则任何数量的空间(*),则结束字符串($)。如果你反而会愿意匹配任何空白(标签等),你可以使用\s*代替*,使得正则表达式如下:

/^\s*$/ 
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 
+0

全球旗帜是不必要的。 – SchoolBoy

+0

哎呀,是测试,删除它 – Patrick2607

相关问题