RegExp.Test总是返回false

Dav*_*ave 4 javascript regex

我在JSfiddle有以下代码:

http://jsfiddle.net/ACG2D/

$(document).ready(function() {
    $('.testThis').click(function() {
        $('.regexValidation').each(function() {
            if ($(this).val() != "" || $(this).val() != null) {
                // Check the regex
                var expression = new RegExp('/^[0-9a-z_]+$/i');
                var myVal = $(this).val();
                if (expression.test(myVal) == true) {
                    // All is okay
                    alert("OK");
                } else {
                    alert("Error");
                }
            }
        });
    });    
});
Run Code Online (Sandbox Code Playgroud)

预期的计划是只允许使用字母数字和下划线.禁止空格和标点符号等

我无法弄清楚为什么会出错,但它总是会为测试返回false.

SLa*_*aks 8

你的语法错了.

将其更改为 var expression = /^[0-9a-z_]+$/i;

与PHP不同,Javascript支持正则表达式文字,语法/.../创建一个RegExp对象.

RegExp构造函数接受一个正则表达式作为一个字符串,没有分隔符.
因此,你也可以写new RegExp('^[0-9a-z_]+$', 'i')


Igo*_*mov 6

从您的RegExp中删除引号:

var expression = new RegExp(/^[0-9a-z_]+$/i);
Run Code Online (Sandbox Code Playgroud)