【问题标题】:regex for date in javascript [duplicate]javascript中日期的正则表达式[重复]
【发布时间】:2015-04-01 13:50:36
【问题描述】:

如何在字符串中搜索 dd/mm/yyyy 这行得通:

/(\d\d?)\/(\d\d?)\/(\d{4})/

但这不是:

/\d{2}\/\d{2}\/d{4}/

【问题讨论】:

  • d{4} 不同于 \d{4}
  • \d\d? 也不同于 \d{2}
  • 他在问为什么 particular 正则表达式不起作用并且他的问题作为重复而被关闭......这让我感到困惑。两者不重复。一个简单的错字,是的......但不是链接问题的重复。

标签: javascript


【解决方案1】:

你有一个错字,但你可能不知道为什么。您的第二个表达式是寻找d{4} 而不是<b>\</b>d{4}。如果没有反斜杠,您只是在寻找字母 d 而不是数字。

此外,{2} 表示您正在寻找前一个字符/组中的 2 个,因此 1/1/2014 不会测试为阳性。 {1,2} 将匹配一个两个连续的项目。第一个表达式使用\d\d? 实现了该功能。 ? 匹配前面的字符/组是否存在。

var tests = [
    { rx: /\d{2}\/\d{2}\/d{4}/, text: "10/10/dddd" },    // true
    { rx: /\d{2}\/\d{2}\/\d{4}/, text: "10/10/2014" },   // true
    { rx: /\d{2}\/\d{2}\/d{4}/, text: "1/1/2014" },      // false
    { rx: /\d{1,2}\/\d{1,2}\/\d{4}/, text: "1/1/2014" }, // true
    { rx: /\d{1,2}/, text: "0" },                        // true
    { rx: /\d{1,2}/, text: "00" },                       // true
    { rx: /\d\d?/, text: "0" },                          // true
    { rx: /\d\d?/, text: "00" },                         // true
];

tests.forEach(function(t){
    console.log("rx: %s, text: %o, matches: %o", t.rx, t.text, t.rx.test(t.text));
});

参见MDN's Regular Expressions documentation,尤其是\d?{n,m}的解释。

【讨论】:

  • 只是作为拼写错误关闭,无需从评论中做出回答。
  • @dystroy 我在发帖时没有看到评论。在我开始起草答案之前,我实际上并没有注意到错字。
  • 对不起,这只是一个错字,我是正则表达式的新手,我认为我做错了
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2017-10-07
  • 2013-05-06
相关资源
最近更新 更多