我在这里使用正则表达式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和additional-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"
}
}
由于
答案 0 :(得分:2)
除非必须,否则不要使用字符串和RegExp()
构造函数。使用本机正则表达式文字:
var yt = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
字符串词法语法还将反斜杠字符识别为元字符,因此您必须通过加倍来引用它们。如果您使用正则表达式文字的表示法,则不必担心。