2011-04-29 195 views
1

如何确保名称中除了撇号之外没有特殊字符...例如: - 我可以允许O'Connor,但不允许John“Doe”?请帮忙。Javascript输入验证

+2

People * do *在其名称中包含重音字符和连字符(例如)。这是一个你应该真正接受自由的领域。 – Quentin 2011-04-29 15:19:01

回答

1

这里是奠定了你,你会如何使用正则表达式来检查给定的条件有效名称的工作例如:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Check for a good name</title> 
    <script> 
    var goodName = /^[A-Za-z'\s]+$/; 

    function checkName(name){ 
     if (goodName.test(name)) { 
      alert("Name is great!"); 
     } else { 
      alert("Name contains illegal characters"); 
     } 
    }  
    </script> 
</head> 
<body> 
    <form onsubmit="return false;"> 
     <input type="text" name="name" size="20"> 
     <input type="button" value="Check" 
          onclick="checkName(this.form.name.value);"> 
    </form> 
</body> 
</html> 

/^[A-Za-z'\s]+$/正则表达式允许大写英文,小写英文,撇号,和空间。 (这与Afiefh提出的类似,增加了\ s以允许空格,而+代替*以防止空白名称通过测试。)

正如David Dorward所建议的,如果您真正使用这个测试的名字,你可能会考虑放宽规则,通过改变线路6本,以适应国际化的名字:

var goodName = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/; 

这使得unicode characters,撇号和连字符。

+0

我刚刚尝试过您的代码,但它接受了所有内容...引号和其他特殊字符... – Sapphire 2011-04-29 16:35:57

+0

真的吗?它对我来说工作得很好。这里有一个工作版本:http://jsbin.com/ereyi3,这里是国际正则表达式:http://jsbin.com/uvowe4/ – Nick 2011-04-29 16:49:40

2

使用一个正则表达式,如果你只想要英文字符和撇号使用^[A-Za-z\']*$,你可以扩展它以检查很多事情。正则表达式是一个非常强大的工具,我会建议他们读了(他们在几乎每一个编程语言存在)

var validRegex = /^[A-Za-z\']*$/; 
if(myString.search(validRegex)==-1) 
    alert("Error"); 

编辑:添加例子。

+0

不挑剔,但这是一个连字符不是一个撇号。 – 2011-04-29 15:14:40

+0

糟糕,我的坏。修正中编辑。 – Afiefh 2011-04-29 15:16:20