我一直在尝试使用 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.match("[^\\w-_]");

[^] 表示不匹配字符集。

\w 表示单词字符 [a-zA-Z0-9]

EdBallot 编辑 :修正错字正则表达式(原为 [^\\w-_] ,改为 [^\w\-_] )

作者编辑 :它应该是 "[^\\w-_]" 因为它是双引号的并且应该被转义,或者你可以单引号或者让它成为正则表达式
username.match(/[^\w-_]/)

关于javascript - 正则表达式不允许除连字符和下划线以外的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31371850/

10-11 22:43
查看更多