2015-09-30 28 views
0

我已經寫了驗證名稱一些代碼,無論它albhabet 它會拋出錯誤,如果沒有albhabet 下面的代碼應該顯示錯誤,但它不顯示錯誤消息名稱應該albhabet只

var nameExpression = '/^[a-zA-Z]/'; 
var name = 'hello123'; 
if (!nameExpression.test(name)) 
    alert('Error:Please enter the valid name'); 
+0

您的正則表達式意思是「以小寫或大寫拉丁字母開頭」,所以hello123會匹配。 – Pavlo

+0

'var str =「Hello World!」; var res = str.toUpperCase();'你爲什麼試試這個... –

+0

你應該說英文字母,如果這就是你的意思。 (而且,如果你正在談論限制一個人的名字,那麼你將會疏遠很多人 - 包括說英語的人。) –

回答

1
var nameExpression = /^[a-zA-Z]+$/; 
var name = 'hello123'; 
if (!nameExpression.test(name)) 
    alert('Error:Please enter the valid name'); 

說明: 1.nameExpression不應該是字符串 2.您應使用結束分隔符如'$' 例如 var nameExpression =/^ [a-zA-Z] $ /;

2
  • 從各地正則表達式litteral刪除引號。否則,它只是一個字符串,而不是RegExp。

  • 添加$到底(/^[a-zA-Z]$/),使其只匹配是完全由ASCII字母,而不僅僅是開始與他們的字符串。哦,謝謝帕夫洛和詹姆斯,錯過了那一個。添加Kleene加號(+),以便它匹配不僅僅是一個信更多:/^[a-zA-Z]+$/

額外提示:如果你解析真實姓名,而不是代碼,那麼你應該期待非ASCII字母。你有點擰,因爲JavaScript的正則表達式不支持Unicode還沒有,但這是一個開始:

/^[^\s\d]+$/i 
相關問題