RegExp.Test总是返回false

时间:2011-07-15 14:09:17

标签: 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");
                }
            }
        });
    });    
});

预定的计划是只允许使用字母数字和下划线。禁止空格和标点等。

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

4 个答案:

答案 0 :(得分:8)

你的语法错了。

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

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

RegExp构造函数将正则表达式作为字符串,不带分隔符 因此,您也可以写new RegExp('^[0-9a-z_]+$', 'i')

答案 1 :(得分:5)

从RegExp中删除引号:

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

答案 2 :(得分:1)

取出这样的引号:new RegExp(/^[0-9a-z_]+$/i);

答案 3 :(得分:0)

在正则表达式的开头和结尾使用斜杠“/”而不是引号。

代码,应该是这样的 -

public void processFinish(ArrayList<String> output)