2017-08-08 159 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

相關問題