RegEx For Validate Link

时间:2012-07-04 10:42:18

标签: javascript regex

我想验证输入框的第一个字母表,我的代码不起作用。

<input type="text" value="www.example.com" id="txt_url"  
 onkeyup="if(!this.value.match(/^http\:\/\//) && (txt_url.lenght >= 7 )this.value='http://'+this.value" />

4 个答案:

答案 0 :(得分:0)

该代码无效的原因有三个:

  1. lenght应为length
  2. txt_url.length应为this.value.length
  3. 您在)条件结束时错过了结束if
  4. 工作版:

    <input type="text" value="www.example.com" id="txt_url"  
     onkeyup="if(!this.value.match(/^http\:\/\//) && (this.value.length >= 7))this.value='http://'+this.value" />
    

    演示:http://jsfiddle.net/J5Uxt/

答案 1 :(得分:0)

您使用的函数中存在拼写错误。(txt_url.lenght)。

我相信它应该是txt_url.length。此外,如果您想验证网址,网上还有更好的正则表达式。

答案 2 :(得分:0)

  • 避免内联(DOM零)事件并集中处理此类事件
  • lenght
  • 中有拼写错误
  • 你是否确定要在键盘上执行此操作,而不是说,模糊或表单提交?如果你每按一次键修改字段值
  • ,对用户来说肯定会很烦人

以下假设模糊,但您可以将事件更改为您想要的任何内容:

jQuery:

$(function() {
    $('#text_url').on('blur', function() {
        if (!/https?:\/\//.test($(this).val()))
            $(this).val('http://'+$(this).val());
    });
});

原生JS:

document.addEventListener('DOMContentLoaded', function() {
    document.querySelector('#text_url').addEventListener('blur', function() {
        if (!/https?:\/\//.test(this.value))
            this.value = 'http://'+this.value;
    }, false);
}, false);

答案 3 :(得分:0)

您的代码已更正

<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(this.value.match(/^http\:\/\//)==null 
&& this.value.length>7)this.value='http://'+this.value;" />

但是如果你想自动输入http://前缀,即使是像ab.com这样的较短域名 然后你可以使用

<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(this.value.match(/^h(t(t(p(\:(\/(\/)?)?)?)?)?)?/)==null)
this.value='http://'+this.value;" />