允许使用字母数字和某些特殊字符

时间:2015-04-27 05:39:33

标签: jquery regex

我需要限制

以外的字符
[A-Z, a-z, 0-9, _, @, #]

我需要将其包含在“ onkeypress ”和“ onblur ”中以处理复制/粘贴值。所以,如果上述场景中有任何正则表达式,则Plz会对此进行更新。

到目前为止,我有类似的内容

$(document).on('keypress onblur', "#Login", function () {
var checkString = $("#Login").val();
if (checkString != "") {
    if (/[^A-Za-z_@#\d]/.test(checkString)) {
        alert("Please enter only letter and numeric characters");
        $("#Login").focus();
        return false;
    }
}
});

上述代码在指定条件下无法正常工作。

2 个答案:

答案 0 :(得分:0)

试试这个:

/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test(string)

[0-9@_#]+会将所有数字与允许的特殊字符匹配 |[a-zA-Z@_#]会将所有字母与允许的特殊字符匹配。

Regex Visualization

Demo



document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("Tushar") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('Tushar')); // True
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("Tushar@#") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('Tushar@#')); // True
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("12345") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('12345')); // True
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("12@#_447") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('12@#_447')); // True
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("tushar1234") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('tushar1234')); // False
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("tushar_1234") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('tushar_1234')); // False
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("tushar@1234") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('tushar@1234')); // False
document.write('<br />/^([0-9@_#]+|[a-zA-Z@_#]+)$/.test("123@tushar") = ' + /^([0-9@_#]+|[a-zA-Z@_#]+)$/.test('123@tushar')); // False
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你不能把^放在你的正则表达式中,否则你只会定位以你的模式开头的字符串,而不是那些包含它的字符串。