我如何确保名称中除了撇号之外没有特殊字符......例如: - 我可以允许O'Connor而不是John“Doe”?请帮忙。
答案 0 :(得分:2)
使用正则表达式,如果您只想要使用撇号的英文字符^[A-Za-z\']*$
,您可以扩展它以检查很多东西。正则表达式是一个非常强大的工具,我建议阅读它们(它们几乎存在于每种编程语言中)
var validRegex = /^[A-Za-z\']*$/;
if(myString.search(validRegex)==-1)
alert("Error");
编辑:添加了示例。
答案 1 :(得分: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提出的类似,添加了允许空格的\,+而不是*来防止空白名称通过测试。)
正如大卫多尔沃德上面所说,如果你真的用它来测试名字,你可以考虑通过改变第6行来放宽规则以适应国际名称:
var goodName = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
这允许unicode characters,撇号和连字符。