JS - 检查文本字段输入中的 http://

JS - Check For http:// In TextField Input

本文关键字:http 输入 检查 文本 字段 JS      更新时间:2023-09-26

我正在使用Appcelerator的Titanium IDE用JavaScript编写我的应用程序。我一直在研究这个问题并尝试正则表达式大约两个小时了。无论如何,我的问题是这样的:

我有一个网址栏。如果用户以"www"开始输入。我希望它在前面添加"http://",如果它们以"http://"开头,它就不会添加它。而且,如果没有"www.",它将添加完整的"http://www."。

一个实用的方法是使用正则表达式(我以前从未使用过它,没有任何经验)或其他东西来查看前两个字母是"ht"还是"ww",如果这不是匹配的,那么它只会添加"http://www"。

刚刚在上面发布的内容是我认为一个人会做的事情,我很可能听起来完全疯了,因为它毫无意义。我并不是真的要求写出整个代码;我可以添加各种东西,我只是在寻找一些对我能够插入和使用/修改有用的代码/输入。

谢谢!

编辑:很棒的回应!我确信大部分工作 - 如果不是全部,所以我尽力了并点赞:)

正则表达式对于这种字符串操作来说太复杂了。试试这个:

<input onchange="testUrl(this)">
<script>
function testUrl(el){
    if(el.value.indexOf('http://') == 0){
        if(!el.value.indexOf('http://www.')){
            el.value = 'http://' + el.value.substr(6);
        }
     } else {
        el.value = 'http://www.' + el.value.substr(6);
     }
}
</script>

这是另一种解决方案:

var appendHttpToUrl = function(url){
    var httpwww = "http://www.";
    var rx = /(^http:'/'/|^www'.)/g;
    if(url.indexOf(httpwww) === -1){
      if(url.indexOf("http://") > -1 || url.indexOf("www.") > -1){
        url = url.replace(rx,httpwww);
      }else{
        url = httpwww+url;
      }
    }
    return url;
}

这是一个演示 http://jsfiddle.net/TJn7A/5/。

if(url.match(/^http:'/'/$/)
  // do stuff for when they start with http://
if(url.match(/^www'./))
  // do stuff for when they start with www
if(!url.match(/(www?'.?|htt?p?:?'/?'/?)/))
  // do stuff for a matching ww or ht...

分解它...

  • ^是模式的开始
  • $是模式的结束
  • (...|...)是左侧或右侧
  • '/'.在必要时转义特殊字符'
  • ?使前一个字符可选

我刚刚破解了这个。是的,它很丑,但它也可以处理https:)

function fixURL(input){
    var r = input.match(/^(https?:'/'/)?(www'.)?(.*)$/);
    return ((r[1] ? r[1] : 'http://') + (r[2]?r[2]:'')  + r[3]);
}
var input="example.com/test";
alert(fixURL(input));

如果您发现此功能失败的情况。 请修复它;-)