JS - 检查http://在TextField输入中

时间:2012-07-01 23:37:26

标签: javascript regex url uitextfield titanium

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

我有一个网址栏。如果用户使用“www”开始输入。我希望它在它前面添加'http://',如果它们以'http://'开头,它就不会添加它。并且,如果没有'www。'或者,它会添加完整的“http:// www。”。

实现这种方法的一种实用方法就是使用正则表达式(我之前从未使用过,没有任何经验)或者看看前两个字母是“ht”还是“ww” ,如果那不匹配,那么它只会添加'http:// www。'

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

谢谢!

编辑:很棒的回复!我相信大多数 - 如果不是全部工作,所以我尽了最大努力并且投了赞成票。)

4 个答案:

答案 0 :(得分:3)

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

<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>

答案 1 :(得分:1)

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...

打破它......

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

答案 2 :(得分:1)

这是另一种解决方案:

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/

答案 3 :(得分:0)

我刚刚攻击了这个。是的它很丑,但它也处理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));

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