带反斜杠的jQuery自定义验证规则

带反斜杠的jQuery自定义验证规则,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,我正在尝试创建一个自定义jquery验证规则,以便对文本框上的值执行正则表达式。规则如下: $.validator.addMethod("validateRegExp", function (value, element, pattern) { console.debug("pattern: " + pattern); var regex = new RegExp(pattern); var isMatch = rege

我正在尝试创建一个自定义jquery验证规则,以便对文本框上的值执行正则表达式。规则如下:

$.validator.addMethod("validateRegExp", function (value, element, pattern) {

            console.debug("pattern: " + pattern);

            var regex = new RegExp(pattern);
            var isMatch = regex.test(value);

            console.debug("value: " + value);
            console.debug("result: " + isMatch);

            return isMatch;
        });
以下是html:

<input type="text" class="{ "validateRegExp": "^\d{1,2}:\d{2}(\s)*(AM|am|PM|pm)$", messages: { "validateRegExp": "Invalid Time" } }" maxlength="8" value="8:00 AM" name="TuesdayStartTime" id="TuesdayStartTime" />

出于某种原因,当调用自定义validateRegExp方法时,pattern属性设置为:

^d{1,2}:d{2}(s)*(上午|上午|下午|下午)$


如您所见,反斜杠已被删除。我甚至可以在每个人应该去的地方加上2到3个反斜杠,当它进入这个方法时,所有的反斜杠都被过滤掉了。如何使其工作?

您似乎试图在双引号中包含双引号。将一些更改为单引号。e、 g

<input type="text"
       class="{ validateRegExp: '^\d{1,2}:\d{2}(\s)*(AM|am|PM|pm)$',
                messages: { validateRegExp: 'Invalid Time' }
              }"
       maxlength="8"
       value="8:00 AM"
       name="TuesdayStartTime"
       id="TuesdayStartTime" />


不确定这是否会有帮助(我以前从未见过这样指定的类),但这不会让它变得更糟。

答案是在正则表达式中为我想要的每一个1添加4个反斜杠,因为它会被解析两次,一次是通过编程创建的,第二次是通过jquery.metadata

title.append($("<div class='section'><input id='" + id + "_EndTime' name='" + id + ".EndTime' value='" +
            (day.EndTime ? day.EndTime : "") + "' type='text' maxlength='8' " +
            utils.addValidationRuleHtml("validateRegExp", "^\\\\d{1,2}:\\\\d{2}(\\\\s)*(AM|am|PM|pm)$", "Invalid Time") + " /></div>"));
title.append($(“”));
很抱歉,我确实有class='',然后里面的字符串有双引号,从firebug复制/粘贴会弄乱引号(输入是动态生成的,所以我无法从源代码复制)。该类看起来是这样的,因为它使用jquery.metadata,允许您声明性地指定验证规则。