什么';使用jquery.validator.addMethod时,允许破折号的正则表达式是否正确?

什么';使用jquery.validator.addMethod时,允许破折号的正则表达式是否正确?,jquery,regex,Jquery,Regex,我就是搞不懂。我正在使用jquery.validator.addMethod。目前我有以下几点: jQuery.validator.addMethod("alphanumeric", function(value, element) { return this.optional(element) || /^\w+$/i.test(value); }, "Letters, numbers, and underscores only please"); 这允许使用字母、下划线和数字。但我需

我就是搞不懂。我正在使用
jquery.validator.addMethod
。目前我有以下几点:

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, and underscores only please");
这允许使用字母、下划线和数字。但我需要允许的是破折号而不是下划线(
-

我对regex非常陌生,我一直在努力解决这个简单的问题,但我就是找不到一个方法来解决。任何帮助都将不胜感激。

这叫“破折号”,试试这个:

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^[a-z0-9\-]+$/i.test(value);
}, "Letters, numbers, and dashes only please");

通过指定
模式
规则和消息,可以获得相同的结果,如下所示:

$('form')。验证({
规则:{
alphanumdash:{
要求:正确,
模式:/^[a-z0-9\-]+$/
}
},
信息:{
alphanumdash:{
必需:“AlphaNumDash是必需的”,
图案:“请仅限字母、数字和破折号”
}
}
});



谢谢!这似乎接受了一切,虽然现在我测试它。像这样的征兆:“等”也在进行中。请考虑接受答案(如果它解决了你的问题。我很乐意接受):但是就像我说的,它不起作用。它不局限于字母、数字和破折号,而是接受任何符号。例如,试图用正则表达式仅返回true/false:
return/([a-z0-9\-]+)/i.test(value)使用了这个选项,它可以工作:/^[a-z0-9\-\s]+$/i.test(值);在此处找到:如果您可以将其编辑为答案,我将接受它。您真的需要为此添加方法吗?我想您只需要指定规则:
pattern://^[a-z0-9\-]+$/I
和消息:
pattern:“请只使用字母、数字和下划线”
。如果有其他方法,我不知道。我会马上研究:)我已经添加了一个答案,以防你发现这种方法在将来有用。事实上,这样做更简单。谢谢,我以后会用的。