【问题标题】:RegExp For Validate Link验证链接的正则表达式
【发布时间】:2012-07-04 10:42:18
【问题描述】:

我想验证我的输入框的 7 个首字母,我的代码不起作用。

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

【问题讨论】:

  • 好吧,这似乎是第二步:regexp-validate-first-http,不是吗。下一次,在针对同一个问题发布两个问题之前,尝试陈述问题,将其分解为子问题,尝试解决每个问题,并最终发布一个问题来描述您所做的事情。

标签: javascript regex


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    该代码不起作用的三个原因:

    1. lenght 应该是 length
    2. txt_url.length 应该是 this.value.length
    3. 您在 if 条件的末尾缺少一个结束 )

    工作版本:

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

    【讨论】:

      【解决方案3】:

      您的代码已更正

      <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;" />
      

      但是,如果您想自动为 ab.com 等较短的域名添加 http:// 前缀 那么你可以使用

      <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;" />
      

      【讨论】:

        【解决方案4】:
        • 避免内联(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);
        

        【讨论】:

        • 抱歉,我的错误 - 已修复。错过了一个括号:) 这是 jQuery 版本in action
        猜你喜欢
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 2021-05-07
        • 2010-11-17
        • 2022-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多