带反斜杠的jQuery自定义验证规则
我正在尝试创建一个自定义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
$.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,允许您声明性地指定验证规则。