2013-02-24 106 views
1

我想使用javascript验证文本字段(名字)。这样它应该只包含文本。没有特殊字符和没有数字,因为它只是第一个名字,它应该只包含一个单词。 (无空格)RegEx只允许英文文本和没有特殊字符

允许:

  • 约翰
  • 约翰

不允许

  • 约翰·肯尼迪。
  • 约翰肯尼迪。
  • john123。
  • 123john。

我试过这个,但它不工作。

if(!validateName($fname)) 
    { 
    alert("name invalid"); 
    } 


function validateName($name) { 
var nameReg = /^A-Za-z*/; 
if(!nameReg.test($name)) { 
    return false; 
} else { 
    return true; 
    } 
} 

编辑: 我试图

var nameReg = /^[A-Za-z]*/; 

,但它仍然没有显示警告框,当我进入john123或123john。

+0

在你的编辑你忘记了$在最后,没有它,一切都会通过验证。 – 2013-02-24 17:40:08

+0

你试过/ [^ A-Za-z]/g吗?添加全局“g”可以查看所有字符。 – peterchon 2013-08-13 23:48:51

回答

0

使用字符类:

var nameReg = /^[A-Za-z]*/; 

没有包含[](使其成为一个字符类),你指定一个文字A-Za-z

UPDATE:

添加$到表达式的末尾。

var nameReg = /^[A-Za-z]*$/; 

否则,返回john123作为正则表达式有效是匹配john和可以忽略的字符串123部分。

工作演示:http://jsfiddle.net/GNVck/

+0

完成了!但是当我输入john123或123john时它仍然不显示警告框 – user1910290 2013-02-24 17:31:58

2

nameReg必须/^[a-z]+$/i(或一些变体光盘)。 ^匹配字符串的开头,$匹配结束。这是“从字符串的开始到结尾的一个或多个a-z字符,不区分大小写。”您可以将+更改为*,但该字符串可能为空。

http://jsfiddle.net/ExplosionPIlls/pwYV3/1/

相关问题