2012-04-19 104 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