如何验证文本框以允许特定URI?

时间:2017-12-15 12:45:17

标签: javascript jquery codeigniter validation

我正在使用Code-igniter开发应用程序。

我想使用J Query或JavaScript验证文本框只允许在用户提交表单时输入以下URL。

http://
https://
ftp://
ftps://
file://
market://
linkedin://
fb://
geo:
maps://

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

function is_url(str)
{
    regexp =  /^(?:(?:https?|ftps?|file?|market?|linkedin?|fb?|maps?):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
    if (regexp.test(str))
    {
      return true;
    }
    else
    {
      return false;
    }
}

答案 1 :(得分:0)

尝试在检查输入有效性的函数中使用此正则表达式。

/^(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//g

但做反向逻辑:

  • 如果匹配则显示错误消息和清除输入。
  • 如果不匹配则您的网址正常

如果您想阻止输入中的任何位置,请删除正则表达式中的前导^以匹配即使URL不是字符串的开头。

喜欢:/(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//gm

以下是整个解决方案的简单版本: fiddlejs

主要是URL验证:

$("#urlInput").focusout(function (){
  var inputElement = $("#urlInput");
    var regexp = /(http|https|ftp|ftps|file|market|linkedin|fb|maps|geo):\/\//gm; 
  if (regexp.test(inputElement.val())){
    inputElement.val("");
    alert("This is nto a valid URL")
  }
});

它与

绑定
<input id="urlInput" type="url">

您可能希望以更友好的方式重新编写错误报告,但这是另一个故事。