【问题标题】:What is wrong with my validation code? (Regex is fine) [duplicate]我的验证码有什么问题? (正则表达式很好)[重复]
【发布时间】:2016-05-10 15:12:42
【问题描述】:

我在这里使用正则表达式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 和附加方法.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"
        }
    }

谢谢

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,成功了!
    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多