Javascript 正则表达式不允许除hypens和下划线以外的符号
多年来,我一直在尝试使用JavaScript获得一个不允许符号的正则表达式,但允许连字符和下划线,但它就是不起作用,下面是我尝试过的:Javascript 正则表达式不允许除hypens和下划线以外的符号,javascript,regex,Javascript,Regex,多年来,我一直在尝试使用JavaScript获得一个不允许符号的正则表达式,但允许连字符和下划线,但它就是不起作用,下面是我尝试过的: function checkUsername(username) { username_lbl = document.getElementById('<%= username_lbl.ClientID %>'); register_btn = document.getElementById('<%= re
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";
}
}
函数检查用户名(username)
{
username\u lbl=document.getElementById(“”);
register_btn=document.getElementById(“”);
if(username.match(“?[!@$%^&*()+=[{]};:。/?。]”)
{
username_lbl.innerHTML='不能包含符号';
寄存器_btn.disabled=true;
用户名\u lbl.style.color=“红色”;
}
}
有人知道我做错了什么吗?因为许多符号(例如?,[,])都用作正则表达式符号。您需要逃离它们,或者执行以下操作:
username.match("[^\\w-_]");
[^]表示与字符集不匹配
\w表示单词字符[a-zA-Z0-9]
EdBallot Edit:修复了打字错误正则表达式(was[^\\w-\\\\\\\\\\\\\\\\
,更改为[^\w\-\\\\\\\\\\\\\
)
作者编辑:应该是“[^\\w-\\\”
,因为它是双引号,应该转义,或者您可以单引号或将其设为正则表达式
username.match(/[^\w-_]/)
只用
var username=“\u Fred-Fred”;
如果(/[^-_a-zA-Z]/.test(用户名)){
警报(“错误用户名:+用户名”);
}
username=“!”弗雷德-弗雷德“;
如果(/[^-_a-zA-Z]/.test(用户名)){
警报(“错误用户名:+用户名”);
}
也许你的意思是如果(username.match(/[-\u]/)
?如果你需要匹配任何Unicode字母,请告诉我。谢谢-节省了我一些时间!正则表达式中有一个输入错误。它应该是[^\w\--\]
@mogorilla什么意思不起作用?你有什么错误吗?