【问题标题】:Restrict Text Box to Pattern and validate Jquery and PHP将文本框限制为模式并验证 Jquery 和 PHP
【发布时间】:2014-09-28 18:52:01
【问题描述】:

我正在尝试设置一个文本框来限制新西兰驾照的格式,所以我一直在寻找正则表达式来验证这一点,但我实际上并不确定如何去做。

该字段需要限制为 2 个字母后跟 6 个数字 (AA123456)

到目前为止,我已经想出了这个模式/([A-Za-z]{2}\d{4})/,它是从http://www.regexr.com/ 得到的,但是在寻找如何在输入字段中使用正则表达式之后,我无法解决。我希望它在他们输入时进行验证,所以说他们输入AAB 它不会添加B。

到目前为止我的代码:

$("#licenceNo").keyup(function() {
    var data = $("#licenceNo").val().match(/([A-Za-z]{2}\d{6})/);
}

但我不确定下一步该怎么做......

我还想使用 PHP 验证这个服务器端。我只是使用相同的表达方式吗?

任何人都可以发布教程链接吗?我搜索时只能找到 EDU 论文。

【问题讨论】:

标签: php jquery regex validation


【解决方案1】:

客户端方法可能比服务器端验证更有意义。我想不出你为什么需要在 PHP 中这样做。

如果最后一个字符与您的模式不匹配,此方法将允许您删除最后一个字符并将文本框设置为红色。否则,它将被设置为绿色并让您继续输入。

$("#licenseNo").on("change keyup", function() {
    isValid = isValidLicenseNo(this.value);
    if (isValid) {
        $(this).css( "background-color", "green" );
    } else {
        $(this).val($(this).val().slice(0,-1));
        $(this).css( "background-color", "red" );
    }
});
function isValidLicenseNo(text) {
    if(text.length < 2) return text.match(/(^[A-Za-z]{0,1})$/);
    return text.match(/(^[A-Za-z]{2}\d{0,6}$)/);
}

这是JS Fiddle

我必须对您的 RegEx 进行一些修改。 '^' 和 '$' 锚点可防止用户在初始匹配后无限期地添加字符。小数匹配后的范围 ('\d{0,6}') 有助于在用户仍在输入车牌时进行匹配。获得一个正确匹配 0-1 字符大小写的 RegEx 是很棘手的,所以我作弊并编写了一个单独的 RegEx。

【讨论】:

  • 谢谢!我检查服务器端的唯一原因是,如果有人在他们的浏览器上禁用了 Javascript,我们的一些客户会这样做:)
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2013-06-07
  • 1970-01-01
  • 2015-08-19
相关资源
最近更新 更多