使用正则表达式在 JavaScript/jQuery 中使用多个 if 语句验证文本

use regex to verify a text using a multiple if statements in javascript/jquery

本文关键字:if 验证 文本 语句 jQuery 正则表达式 JavaScript      更新时间:2023-09-26

>我需要识别从<input>提交的数据/文本,如果它包含以下任何一项。 youtubevimeonormal websitejpg/pngplain text

if a youtube link is found {
    //do something
  } else if a vimeo link is found {
    //do something
  } else if a normal website is found {
    //do something
  } else if a (jpg/png) is found {
    //do something
  } else  just a text {
} //do something

目前是我的语法。 YouTube和Vimeo正则表达式格式取自其他帖子。 但我不确定如何为其他人创建正确的正则表达式。

我尝试了一些正则表达式生成器,但它使用起来很复杂

我也想知道这是否是执行多个条件语句的正确方法。

$(function() {
    $(document).on('click','.submit', function () {
        var data = $('#input').val();
        var youtube = /^.*(youtu.be'/|v'/|u'/'w'/|embed'/|watch'?v=)([^#'&'?]*).*/;
        var vimeo = /^(http':'/'/|https':'/'/)?(www'.)?(vimeo'.com'/)([0-9]+)$/;

        if (data.match(youtube)) {
            alert("utube");
        }
        else if (data.match(vimeo)) {
            alert("vimeo");
        }
            else if ...
    });
});

有一百万种不同的方法可以做到这一点。

您需要的其他正则表达式大致是波纹管。此外,如果您将数据小写,它将为您省去一些麻烦

var data = $("#input").val.toLowerCase(); 

网址

/((([A-Za-z]{3,9}:(?:'/'/)?)(?:[-;:&='+'$,'w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&='+'$,'w]+@)[A-Za-z0-9.-]+)((?:'/['+~%'/.'w-_]*)?'??(?:[-'+=&;%@.'w_]*)#?(?:['w]*))?)/

PNG/JPG 位于字符串的末尾

/(png|jpg|jpeg)$/

我认为纯文本将是剩下的

最有效的方法也是使用 switch 语句,如果不是很大的话

像这样 http://www.w3schools.com/js/js_switch.asp

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}

当您有多个正则表达式条件要检查时,我建议使用 switch 语句:

var data = $('#input').val();
var youtube = /^.*(youtu.be'/|v'/|u'/'w'/|embed'/|watch'?v=)([^#'&'?]*).*/;
var vimeo = /^(http':'/'/|https':'/'/)?(www'.)?(vimeo'.com'/)([0-9]+)$/;
var normalWebsite = /^(?:ftp|http|https):'/'/(?:['w'.'-'+]+:{0,1}['w'.'-'+]*@)?(?:[a-z0-9'-'.]+)(?::[0-9]+)?(?:'/|'/(?:['w#!:'.'?'+=&%@!'-'/'(')]+)|'?(?:['w#!:'.'?'+=&%@!'-'/'(')]+))?$/;
var image = /<img's+src's*='s*(["'][^"']+["']|[^>]+)>/;
switch (true) {
  case youtube.test(data):
    alert('youtube');
    break;
  case vimeo.test(data):
    alert('vimeo');
    break;
  case normalWebsite.test(data):
    alert('normal website');
    break;
  case image.test(data):
    alert('image');
    break;
  default:
    // Here we are assuming anything that doesn't match the above is plain text.
    // You will need an additional regex if you want to make sure this doesn't contain html or code.
    alert('Plain text');
    break;
}