首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有一个简单的正则表达式来检查日期格式模式?

有没有一个简单的正则表达式来检查日期格式模式?
EN

Stack Overflow用户
提问于 2020-07-29 01:02:43
回答 2查看 33关注 0票数 0

我发现有很多正则表达式检查与格式匹配的日期值(数字),但我不想检查这个。我让用户可以选择编写自己的自定义模式日期,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
    d-mm-yyyy
    MM/dd/yy
    yyyy.mm.d

我想检查这个用户写的字符串"MM/dd/yy“是有效的,除了d,DD,MM,...中间加".","/","-“。斯特兰奇没有发现任何检查所有简单模式的正则表达式,而是发现了许多检查数字的正则表达式,而不是模式本身。

EN

回答 2

Stack Overflow用户

发布于 2020-07-29 01:12:24

这应该是可行的:

代码语言:javascript
代码运行次数:0
运行
复制
const regex = /(\d{1,2}(?:-|\/)\d{1,2}(?:-|\/)(?:\d{4}|\d{2}))|(\d{4}\.\d{1,2}\.\d{1,2})/gm

// valid cases
regex.test('1-01-2000')
regex.test('12-1-2000')
regex.test('10/10/11')
regex.test('10/1/2011')
regex.test('1/1/2011')
regex.test('2000.12.1')
regex.test('2000.1.11')

这将为测试日期的有效性提供一种非常健壮的方法。

票数 0
EN

Stack Overflow用户

发布于 2020-07-29 01:27:18

好吧,我修改了我的答案。因此,如果你想创建某种日期模式验证器,请检查下面的代码。它不仅是RegExp,而且还有一些功能逻辑来捕获重复等。

代码语言:javascript
代码运行次数:0
运行
复制
const test = (str) => {
  // Check main pattern
  const m = str.match(/^([md]{1,2}|y{4}|y{2})[-\/\.]([md]{1,2}|y{4}|y{2})[-\/\.]([md]{1,2}|y{4}|y{2})$/i);
  
  // Print false
  const noMatch = () => console.log('Not match!', str);
  
  // If no matched groups
  if(!m) {
    noMatch();
    return false;
  }
  // Unique obj
  const unique = {};
  
  // Check if all match is unique
  const mArr = ["d", "m", "y"];
  for(let i = 1; i < m.length; i++) {
    const mStr = m[i];
    // Loop avaliable char
    for(let i = 0; i < mArr.length; i++) {
      const re = new RegExp(`^[${mArr[i]}]+$`, "i");
      // If match char
      if(re.test(mStr)) {
        // If already in unique object
        if(unique[mArr[i]]) {
          noMatch();
          return false;
        } else unique[mArr[i]] = true;
      }
    }
  }
  
  // Match
  console.log('Matched!', str);
}

test('dd-mm-yyyy');
test('YYYY/MM/DD');
test('dd.mm.yy');
test('dd.dd.yyyy');
test('dd|mm|yyyy');
test('ddd-mmm-yyyy');
test('dd/mm/yyy');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63139231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档