【问题标题】:convert HTML5 Regex pattern to javascript Regex将 HTML5 正则表达式模式转换为 javascript 正则表达式
【发布时间】:2013-10-18 11:10:18
【问题描述】:

对于带有正则表达式模式的输入字段:

<input type="text" maxlength="4" inputmode='numeric' pattern="\d*">

我想使用 javascript 来验证输入,通过以某种方式解析 pattern 属性(不起作用):

$('input').on('keypress', function(e){
    var regex = this.pattern,
        valid = eval(regex).test( e.charCode );

    if( !valid )
        return false;
});

我知道模式中的正则表达式与 JS 使用的不同,但我需要某种方法来转换任何正则表达式,使这种方法可以工作,只允许输入模式允许的字符。

【问题讨论】:

  • 根据经验:如果您的解决方案使用eval,它可能很糟糕。
  • 如果它是我在内部为自己使用的东西并且不会发生注射,我不会说不好。
  • 不像“容易注入”那样“坏”,而是像“低效、不优雅和容易出现错误”那样“坏”。

标签: javascript regex html validation


【解决方案1】:

使用RegExp 构造函数:

var regex = this.pattern,
    valid = new RegExp("^"+regex+"$").test( e.charCode );

但你的模式应该是\d+,而不是\d*

【讨论】:

  • 当我尝试它时,它总是false...function testChar(pattern, s){ return valid = new RegExp("^"+pattern+"$").test( s ); }; testChar("\d+", '3')
  • 那是因为您错误地创建了字符串文字:使用“\\d+”而不是“\d+”。见jsfiddle.net/QK96C
【解决方案2】:

只需添加字符串的开头和结尾"^"+your reg ex here+"$"

【讨论】:

    【解决方案3】:

    也许你可以使用this 插件。 它在不可用时模拟 html5 功能(旧版浏览器)。

    【讨论】:

    • 我正在寻找一个最小的解决方案,就像一个单行的东西
    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 2019-05-11
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多