我已经尝试了很多年现在使用JavaScript来获得一个正则表达式,但是不允许使用连字符和连字符,但它只是不起作用,这是我尝试过的:
function checkUsername(username)
{
username_lbl = document.getElementById('<%= username_lbl.ClientID %>');
register_btn = document.getElementById('<%= register_btn.ClientID %>');
if (username.match("?[!@#$%^&*()+=[{]};:<>|./?.]"))
{
username_lbl.innerHTML = 'Cannot contain symbols';
register_btn.disabled = true;
username_lbl.style.color = "red";
}
}
有谁知道我做错了什么?
答案 0 :(得分:2)
因为许多符号(例如?,[,])被用作正则表达式符号。你需要逃避它们,或者这样做:
username.match("[^\\w-_]");
[^]表示与字符集不匹配。
\ w表示单词字符[a-zA-Z0-9]
EdBallot编辑:修正了错字正则表达式([^\\w-_]
,已更改为[^\w\-_]
)
作者编辑:它应该是"[^\\w-_]"
,因为它是双引号并且应该被转义,或者您可以单引号或使其成为正则表达式
username.match(/[^\w-_]/)
答案 1 :(得分:0)
只需使用
var username = "_Fred-Fred_";
if (/[^-_a-zA-Z]/.test(username)) {
alert("Wrong username: " + username);
}
username = "!_Fred-Fred_";
if (/[^-_a-zA-Z]/.test(username)) {
alert("Wrong username: " + username);
}
[^-_a-zA-Z]
匹配除字母,连字符或下划线之外的任何内容。如果发现其他内容,则测试失败。