2012-04-19 64 views
47

我需要检查,看是否有var为空或有任何空的空间或与此有关的只是空白(“”)的JavaScript检查是否为空或白色具有空间

我有以下但不工作:

var addr; 
addr = " "; 

if (!addr) { 
    // pull error 
} 

如果我下面它的工作原理

if (addr) { 

}​ 

我需要的是这样的C#方法:

String.IsNullOrWhiteSpace(value) 

,这样,如果为空或有任何空间或没有空间,我可以捕获它

+2

你真的是指'有*任何*空格吗?或者你的意思是“全是空白”? – Madbreaks 2012-04-19 16:54:12

+0

undefined呢? – CodeToad 2015-01-05 09:32:32

回答

71

非jQuery的解决方案,更加紧密地模仿IsNullOrWhiteSpace,但检测空,空的或唯一的全空间:

function isEmptyOrSpaces(str){ 
    return str === null || str.match(/^ *$/) !== null; 
} 

...然后:

var addr = ' '; 

if(isEmptyOrSpaces(addr)){ 
    // error 
} 

*编辑* 请注意,运明确规定“我需要检查,看是否有var为空或有任何空的空间或与此有关的只是空白”。所以,当然,“空白”包含的空白,空白或空白我的答案旨在回答op的具体问题。这很重要,因为op可能不希望捕获诸如制表符等内容。

+30

空格还可以包含制表符,其他类型的空格等。使用'/^\ s * $ /'来捕获这些空格。 – grant 2013-08-09 00:26:53

+0

@Grant我有目的地没有这样做,因为op说:_“我需要检查var是否为null或有任何空的空间或只是空白”_。 – Madbreaks 2013-09-25 18:56:50

+5

C#方法的语义需要格兰特的细节。 – subsci 2013-12-31 09:38:17

13

您可以使用if(addr && (addr = $.trim(addr)))

这样做的实际删除从addr任何外部的空白,而不是仅仅忽略的优势它在执行检查时。

参考:http://api.jquery.com/jQuery.trim/

+2

假设,op *想要*删除空格。 :) – Madbreaks 2012-04-19 16:23:35

+0

如果'addr'被初始化为例如,您的答案将返回误报。一个整数。 – Madbreaks 2012-04-19 16:48:00

+0

如果没有更多的信息,我认为var总是一个字符串,如果它不是null/undefined。 – ThiefMaster 2012-04-19 16:50:13

9
if (addr == null || addr.trim() === ''){ 
    //... 
} 

null比较也将赶上undefined。如果您还想通过false,请使用!addr。对于向后浏览器兼容性交换addr.trim()$.trim(addr)

+0

_“如果您还想传递false,请使用!addr”_ - 如果addr为零,则会中断。 – Madbreaks 2017-04-05 17:10:43

2

您可以创建自己的方法相当于

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace(value) { 

    if (value== null) return true; 

    return value.replace(/\s/g, '').length == 0; 
} 
+1

'\ s'匹配的不仅仅是空格 – Madbreaks 2012-04-19 16:46:17

2

当检查空格时,c#方法使用Unicode标准。空格包括空格,制表符,回车符和许多其他非打印字符代码。所以你最好使用:

function isNullOrWhiteSpace(str){ 
    return str == null || str.replace(/\s/g, '').length < 1; 
} 
+0

Op明确指出目标是检查*空格*,而不是空格。 – Madbreaks 2013-07-10 23:12:22

+4

Op说:“我需要的是这样的C#方法:String.IsNullOrWhiteSpace(value)”。如果您只是检查空格,则不会命名您的函数isNullOrWhiteSpace,而是将其命名为IsNullOrEmtpy。 – 2013-07-11 13:17:08

+0

C#方法*可以检查字符串是否为空或一系列空格。欧普想要一些“喜欢”的东西,但要专门检查空间。 – Madbreaks 2013-07-11 23:13:13