我不想允许特殊字符,但这个正则表达式仍然允许它们,我做错了什么?
当我输入姓名时:'&é“é&'é”&'&é“'a'它仍然会回复'true'
name.match(/[a-zA-Z1-9 ]/))
答案 0 :(得分:6)
您需要将RegExp#test
与主播^
和$
一起使用。
/^[a-zA-Z1-9 ]+$/.test(name)
如果找到匹配项,则 String#match
返回一个数组。在您的情况下,找到字符串末尾的a
并返回数组。并且数组在Javascript中是真实的。我相信,数组转换为布尔值,因此它返回true
。
答案 1 :(得分:3)
它返回true,因为最后一个字符('a')没问题。您的正则表达式不会检查完整输入是否与正则表达式匹配。
试试这个: ^ [a-zA-Z1-9] * $
答案 2 :(得分:2)
if(!/[^a-zA-Z0-9]/.test(name)) {
// "your validation message"
}
试试这个
答案 3 :(得分:1)
这对你有用:
var nameregex = /^([A-Za-z0-9 ]$)/;
var name = document.getElementById('name').value;
if (!name.match(nameregex)) {
alert('Enter Valid Name!!');
}