javascript - 我的验证码有什么问题吗? (正则表达式没问题)

标签 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 和 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/

相关文章:

javascript - 是否可以构造一个匹配 Grapheme Cluster Break=Extend 的\p JavaScript 正则表达式

jquery - 在表单中实现查看/编辑模式

python - 忽略路径字符串中的特定单词

Java 是否支持其正则表达式库中的非 BMP Unicode 字符(即代码点 > 0xFFFF)?

Javascript 在 Mac OSX 的 Safari 中不起作用

jquery - 在 JQuery 选择器中连接字符串

jquery - 登录后重新加载 AntiForgeryToken

javascript - 将表格单元格数据转换为单独的 .js 文件中的内部链接

javascript - 使用 options.items 与标题的 JQuery UI 工具提示扩展

javascript - mongodb:close 注销 mongod