Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式不允许除hypens和下划线以外的符号_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式不允许除hypens和下划线以外的符号

Javascript 正则表达式不允许除hypens和下划线以外的符号,javascript,regex,Javascript,Regex,多年来,我一直在尝试使用JavaScript获得一个不允许符号的正则表达式,但允许连字符和下划线,但它就是不起作用,下面是我尝试过的: function checkUsername(username) { username_lbl = document.getElementById('<%= username_lbl.ClientID %>'); register_btn = document.getElementById('<%= re

多年来,我一直在尝试使用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";
        }
    }
函数检查用户名(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什么意思不起作用?你有什么错误吗?