javascript - 可接受空输入的 JS YouTube 正则表达式

标签 javascript regex youtube

我有一个用于嵌入代码的 YouTube 输入,我希望用户不必输入 YouTube 嵌入。但我对如何更改我的正则表达式以接受空字段感到困惑...如果用户未通过正则表达式,我会设置错误,如果用户通过正则表达式,则不会出现错误,所以我想会有一个简单的修复正则表达式接受空输入值。

任何人都可以看到我如何从下面的代码中实现这一目标...

感谢您的建议。

function checkyoutube() {


var youtube = $("#youtubevalue").val();


//var youtubeReg =/^[a-zA-Z][a-zA-Z0-9-+&%#=?<>()£~_\.*@$!, \r\n]{0,300}$/;
  var youtubeReg =/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((.|-){11})(?:\S+)?$/;

    if(!youtubeReg.test(youtube)) { localStorage.setItem('error', 'true');
        $("#youtubefooter").text("Example https://youtu.be/12KxXnFbwbU"), $( "#youtubevalue" ).addClass( "errorclass" ), $( "#youtubevalue" ).removeClass( "noerrorclass");
                    }  

    if(youtubeReg.test(youtube)) { localStorage.setItem('error', 'false');
        $("#youtubefooter").text("URL Is Good, Thanks!"), $( "#youtubevalue" ).addClass( "noerrorclass" ), $( "#youtubevalue" ).removeClass( "errorclass");
                    } 



var youtubeB = document.getElementById('youtubevalue');

(var regex= LOTS / OF / BAD / WORDS;)'EDITED FOR STACK'
youtubeB.value=youtubeB.value.replace(regex, "****");   


};

最佳答案

您可以使用非捕获组 (?:.....)? 使正则表达式可选 ?

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

var youtubeReg = /^(?:(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((.|-){11})(?:\S+)?)?$/;
var strings = [
  'https://youtu.be/12KxXnFbwbU',
  '',
  'https://youtu'
];
strings.forEach((s) => {
  console.log(s + ' ==> ' + youtubeReg.test(s));
});

关于javascript - 可接受空输入的 JS YouTube 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51338449/

相关文章:

javascript - 如何在 Knockout JS 中的 BindingHandler 中获取绑定(bind)表达式

python - Python 正则表达式是否允许嵌入选项?

c# - 将 C# 正则表达式转换为 Java 正则表达式

youtube - YouTube iframe脚本返回429

javascript - 如何将 js 变量传递给 flask jinja 函数 url_for

javascript - 使用纯 Javascript 仅在移动设备上点击时显示列表内容,最初在桌面上显示

javascript - 在查找和替换中使用正则表达式提取除模式/字符串之外的所有内容

android - 使用arrayadapter向 ListView 动态添加项目

c# - 如何使用字符串变量来搜索网站/转到网站

javascript - Date#toLocaleDateString Chrome 与 Electron