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

时间:2011-02-24 19:28:48

标签: jquery regex jquery-validate

我正在尝试创建自定义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)*(AM | AM | PM |时)$

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

2 个答案:

答案 0 :(得分:0)

您似乎试图在双引号内使用双引号。将一些更改为单引号。 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 :(得分:0)

答案是为正则表达式中我想要的每个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>"));