我在这里使用正则表达式jQuery Youtube URL Validation with regex
^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$
这里工作正常https://regex101.com/#javascript
但是我的代码无法正常工作 - 我正在使用 jquery.validate.min.js 和 extra-methods.js
我下面的代码与其他正则表达式一起工作正常,但对于这个则不起作用,它总是显示无效:
var yt = new RegExp("^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$");
$("#submit-form").validate({
// Specify the validation rules
rules: {
yturl: {
required: true,
minlength: 3,
pattern: yt
}
},
messages: {
yturl: {
pattern: "Wrong url"
}
}
谢谢
最佳答案
除非必要,否则不要使用字符串和 RegExp()
构造函数。使用 native 正则表达式文字:
var yt = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
字符串词法语法还将反斜杠字符识别为元字符,因此您必须通过将它们加倍来引用它们。如果您使用正则表达式文字的表示法,则不必担心这一点。
关于javascript - 我的验证码有什么问题吗? (正则表达式没问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142893/