2013-12-15 1 views
1

그래서 사용자가 사진 및 YouTube 동영상을 URL로 업로드 할 수있는 양식이 있습니다. 이것은 내가 제출 된 URL은 JPG에서 끝나는 확인하는 방법입니다유효한 URL이 Youtube VIDEO 또는 IMAGE URL인지 확인하는 정규식

$("#urlpostform").validate({ 
    rules: { 
    imageurl: { 
     required: true, 
     complete_url: true 
    } 

: 다음

jQuery.validator.addMethod("complete_url", function(val, elem) { 
    // if no url, don't do anything 
    if (val.length == 0) { return true; } 

    // if user has not entered http:// https:// or ftp:// assume they mean http:// 
    if(!/^(https?|ftp):\/\//i.test(val)) { 
     val = 'http://'+val; // set both the value 
     $(elem).val(val); // also update the form element 
    } 
    // now check if valid url 
    // http://docs.jquery.com/Plugins/Validation/Methods/url 
    // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ 
    return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?\.(gif|jpg|jpeg|png)$/i.test(val); 
}); 

그리고 : 나는이 같은 이미지의 URL을 확인하는 JQuery와 유효성 검사 플러그인을 사용하고

| PNG | JPEG | GIF와 그 작업.

이제 제출 된 URL이 Youtube 비디오 또는 IMAGE 인 경우 유효성을 검사하기위한 조건을 추가하고 싶습니다.

^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$ 

하지만 그것은 에테르 유튜브 URL 또는 이미지 URL을 검증하기 위해 동일한 입력에 함께 작동하도록하는 방법을 모른다 :

은 제출 된 URL이 YouTube 동영상 수 있는지 확인하는 정규식입니다.

어떻게하면됩니까?

답변

0

나는 더 테스트를 통해 그러나 아마 이런 일이 없습니다 :

jQuery.validator.addMethod("complete_url", function(val, elem) { 
// if no url, don't do anything 
if (val.length == 0) { return true; } 

// if user has not entered http:// https:// or ftp:// assume they mean http:// 
if(!/^(https?|ftp):\/\//i.test(val)) { 
    val = 'http://'+val; // set both the value 
    $(elem).val(val); // also update the form element 
} 

var imgRegex = new Regex("/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?\. (gif|jpg|jpeg|png))"; 
var youtubeRegex = new Regex("^http:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$"); 

//determine the url 
if(imgRegex.test(val) == true) 
    return true; 
else if(youtubeRegex.test(val) == true) 
    return true; 
else 
    return false; 
}); 

이 이미지 인 경우는 위의 첫번째 확인하고, 그렇지 않은 경우는 유튜브 URL 인 경우가 확인합니다. 다른 기능은 동일하게 유지됩니다.

$("#urlpostform").validate({ 
rules: { 
imageurl: { 
    required: true, 
    complete_url: true 
} 

마음에 들었던 것과 비슷한 기능입니까? 이것은 너무 일

0

,

$.validator.addMethod("youtube_url",function(value, element) { 
       return this.optional(element) || /^https:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$/i.test(value); 
      }, 
      "Invalid Youtube Url" 
    ); 


$("#urlpostform").validate({ 
rules: { 
imageurl: { 
    required: true, 
    youtube_url: true 
}