2015-01-09 36 views
0

我想驗證一個表單域,我需要這個域只承認字母和空格,但如果我在表單中寫入一個空格域未驗證,什麼是允許的正則表達式寫空格?正則表達式來承認Javascript上的空間

function isCharacter(element, message){ 
    var alphaExp = /^[a-zA-Z]\s+$/; 
    if(element.value.match(alphaExp)) { 
     return true; 
    } else { 
     alert(message); 
     return false; 
    } 
} 
+0

使用'\ s *'而不是'\ s +'''''''''的兩側。 '\ s +'意味着字符串末尾有一個或多個空格。或者更好的寫在'[...]'內,否則它只接受單個字符以及一個或多個空格 – Braj

+0

你的'+'量詞隻影響'\ s',而不是'[a-zA-Z] '。所以你的模式匹配一​​個字符後跟任意數量的空格。 –

回答

2

您可以強制的第一個字符被aphabet,然後字母或空格作爲

/^[a-zA-Z][a-zA-Z\s]+$/ 

這確保了提交的投入將不包含單獨的空間

"asdf asdf".match(/^[a-zA-Z][a-zA-Z\s]+$/) 
=> True 

" ".match(/^[a-zA-Z][a-zA-Z\s]+$/) 
=> False 
0

可以使用html5 pattern爲輕鬆處理

<input type="text" name="name" pattern="^[a-zA-Z\s]+$" /> 
 
<input type="submit" value="ok" name="ok" />

+0

這並不能真正解釋現在表達的問題。 –

2

問題是你的正則表達式,你必須把\s[]內實現它。

var alphaExp = /^[a-zA-Z\s]+$/; 

Here's a DEMO

0
var alphaExp = /^[a-zA-Z]+$/; 
var idLetters = ["a", "b", "m"]; 

var counter = 0; 
var counter1 = 0; 
var errors = ""; 

var numberonly = id.slice(0,-1); 
var lettersonly = id.slice(-1); 
+0

**來自複查隊列**:我可以請求您請您在答案中添加一些上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT