我正在使用Appcelerator的Titanium IDE在JavaScript中编写我的应用程序。我一直在研究这个并试用Regex大约两个小时了。无论如何,我的问题是:
我有一个网址栏。如果用户使用“www”开始输入。我希望它在它前面添加'http://',如果它们以'http://'开头,它就不会添加它。并且,如果没有'www。'或者,它会添加完整的“http:// www。”。
实现这种方法的一种实用方法就是使用正则表达式(我之前从未使用过,没有任何经验)或者看看前两个字母是“ht”还是“ww” ,如果那不匹配,那么它只会添加'http:// www。'
我上面发布的是我认为会做的事情,而且我很可能听起来很疯狂,因为它毫无意义。我并不是真的要求写出整个代码;我可以添加各种各样的东西,我只是想找一些对我能够插件和使用/修改有用的代码/输入。
谢谢!
编辑:很棒的回复!我相信大多数 - 如果不是全部工作,所以我尽了最大努力并且投了赞成票。)答案 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;
}
答案 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));
如果您发现此功能失败的情况。请修理它; - )