我的验证码有什么问题? (正则表达式很好)

时间:2016-02-02 00:17:04

标签: javascript jquery regex

我在这里使用正则表达式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"
        }
    }

由于

1 个答案:

答案 0 :(得分:2)

除非必须,否则不要使用字符串和RegExp()构造函数。使用本机正则表达式文字:

var yt = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;

字符串词法语法还将反斜杠字符识别为元字符,因此您必须通过加倍来引用它们。如果您使用正则表达式文字的表示法,则不必担心。