【问题标题】:Pattern validation with JavaScript使用 JavaScript 进行模式验证
【发布时间】:2017-05-30 07:35:14
【问题描述】:

我想要一个只有字母和数字的图案。

这就是我的做法......

JavaScript 文件:

var pattern_checked = checkPattern(); 

function checkPattern(){
        var elem = document.getElementById("name");

        var pattern = elem.getAttribute("[a-zA-Z0-9_]");
        var re = new RegExp(pattern);
        if (re.test(elem.value)) {
            return true;
        } else {
            return false;
        }
    }

但在这两种情况下,我都错了。

这段代码有什么问题?

【问题讨论】:

  • 你也可以发布你的html吗?你确定你的html中有[a-zA-Z0-9_]这样的属性吗?我认为它是pattern attr
  • 你检查elem.getAttribute("[a-zA-Z0-9_]")会返回什么???
  • 我猜你的模式是属性值。 elem.getAttribute("attributeName") 会返回你的模式。
  • @prasad 我想我做错了什么。如何使用该模式?
  • 是的,你做错了。这就是为什么我要问 html 代码@ishanshah

标签: javascript regex pattern-matching


【解决方案1】:

我相信你的意思是:

function checkPattern() {
    var elem = document.getElementById("name");

    // Allow A-Z, a-z, 0-9 and underscore. Min 1 char.
    var re = /^[a-zA-Z0-9_]+$/;

    return re.test(elem.value);
}

【讨论】:

  • re.test() 将返回布尔值。直接退货吧。
  • 这正是我想要的。非常感谢!
【解决方案2】:

Example fiddle

你的问题应该在这一行。

var pattern = elem.getAttribute("[a-zA-Z0-9_]");

属性通常应该有一个带有值的名称。但是从您的示例来看,该值似乎也是名称。 HTML 代码应如下所示:-

<input type='text' id='name' pattern='[a-zA-Z0-9_]'>

然后得到模式

var pattern = elem.getAttribute("pattern");

【讨论】:

  • 是的,明白了!我没有在 html 文件中提到模式。
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
相关资源
最近更新 更多