0

我知道这个论坛中有数百(或可能数千)关于regex功能的问题。我已经阅读并咨询了几本,根据所有假设,我应该有答案,我的功能应该可以工作,但事实并非如此。

我试图构建一个函数,其中一项检查是只允许字母数字字符。

代码的精简版是这样的:

function functionName() {
    var x = $("#inputId").val();

    //trying to locate any/all non alphanumeric characters & spaces
    var regex = /^[^0-9a-zA-Z\s]+$/g 

    if ( x.indexOf(regex) >= 0 ){
        alert("message");
        return false;
    }
}

有谁知道我哪里出错了?

谢谢

4

3 回答 3

4

你不应该使用indexOf; 你应该使用test. 这也是您正在使用的一个有趣的正则表达式。我在下面对其进行了修改以匹配有效字符串而不是无效字符串。

function functionName(){
    var x = $("#inputId").val();

    var regex = /^[a-zA-Z0-9]+$/g;

    if ( x.test(regex) ){
        alert("Only contains alphanumeric characters. No punctuation or spaces!");
    } else {
        return false;
    }
}
于 2013-05-26T06:22:51.473 回答
1

您的正则表达式仅匹配完全由无效字符组成的字符串。当至少有一个无效字符时,您真正想要的是一个匹配

var regex = /[^0-9a-zA-Z\s]/;
if (regex.test(x)) ...
于 2013-05-26T06:32:27.317 回答
0

你错过了最后的'}'

于 2013-05-26T06:22:05.113 回答