【问题标题】:RegEx conversion to use with Javascript正则表达式转换与 Javascript 一起使用
【发布时间】:2015-08-26 11:00:13
【问题描述】:

我目前在 .NET 中使用此 RegEx ^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$ 来验证具有月份和年份的字段 (12/2000)。

我正在将我的所有 RegEx 验证更改为 JavaScript,但我遇到了这个问题,因为中间有 /,我在转义时遇到了问题。

所以根据 SO 中的其他答案,我尝试了:

    RegExp.quote = function (str) {
        return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
    };
    var reDOB = '^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$'

            var re = new RegExp(RegExp.quote(reDOB));
            if (!re.test(args.Value)) {
                args.IsValid = false;
                return;
            }

但是,即使有有效数据,验证也会失败。

【问题讨论】:

  • 使用正则表达式运算符// 的简单var re = /^(0[1-9]|1[0-2])\/(19|2[0-1])\d{2}$/; 怎么样??
  • @sln 这不是一个正则表达式吗?
  • 哦,也许吧。它不是将re 编译为正则表达式对象吗?
  • 有点像变体,可能是var re = /.../; 正则表达式对象,而不是var s = '...'; bstr 对象。
  • @Diomedes — 对于个位数月份,删除前导零:/^([1-9]|1[0-2])\/(19|2[0-1])\d{2}$/

标签: javascript regex validation


【解决方案1】:

从正则表达式模式的末尾删除第一个 ^$。并在要按模式匹配的任何字符之前添加\。所以模式是这样的:

(0[1-9]|1[0-2])\/(19|2[0-1])\d{2}

您可以从here 测试您的正则表达式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2019-05-11
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多