`
jindw
  • 浏览: 505352 次
  • 性别: Icon_minigender_1
  • 来自: 初到北京
社区版块
存档分类
最新评论

正则表达式实现JavaScript日期格式化的想法。

阅读更多
今天和网友聊起在javascript里面实现DateFormat 的话题。

把想法发布一下,当是笔记。

格式化:
  1、先用正则把日期表达式分段:
    var tokens = "yyyy-MM-dd(没有时间)".match(/y+|M+|d+|m+|[^yMdm]+/g)
    //结果数组为:yyyy,-,MM,-,dd,(没有时间)
  2、将其中的yyyy MM dd 替换成相映的处理对象

  3、格式化时,先复制数组,依次遍历,如果元素是处理对象,那么元素值替换成处理结果。

  4、将新数组join。即为需要结果。

  5、parse时。先复制数组,若元素为字符串,精确匹配。若未处理对象,读取需要的值,匹配失败,则终止操作,返回结果。





yyyy MM dd 的处理对象可以根据首字母确定,长度可以作为处理函数的参数,这样,减少对象数目。维护起来方便一点。

想法而已,实际实现时可能还有很多现在无法意料的事情:)
分享到:
评论
7 楼 hax 2007-06-08  
campaign 写道
请问if(/(y+)/.test(fmt)) 这句是什么意思


正则。

如果fmt里有一个“y”
6 楼 campaign 2007-06-08  
请问if(/(y+)/.test(fmt)) 这句是什么意思
5 楼 jindw 2007-06-08  
如果按照上面的想法,实现出来,分隔符时不需要定义的,只要不是yMdhms都将当作分隔符处理,基本喝java 的 DateFormat行为一样了:)
4 楼 jianfeng008cn 2007-06-08  
ext的也很不错 不过好像这些都不支持 分隔符 自定义 比如可以用“-” 也可以用“/”
3 楼 hax 2007-06-07  
理想上最好是实现java的DateFormat。
不过要求不是很高的话,Meizz的用用就可以了。
2 楼 aiut 2007-06-07  
("00"+ o[k]).substr((""+ o[k]).length);

这句比较经典
1 楼 myy 2007-06-07  
这个很不错,好像是 csdn 的 Meizz 写的:

// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function(fmt)
{ //author: meizz
  var o = {
    "M+" : this.getMonth()+1,                 //月份
    "d+" : this.getDate(),                    //日
    "h+" : this.getHours(),                   //小时
    "m+" : this.getMinutes(),                 //分
    "s+" : this.getSeconds(),                 //秒
    "q+" : Math.floor((this.getMonth()+3)/3), //季度
    "S"  : this.getMilliseconds()             //毫秒
  };
  if(/(y+)/.test(fmt))
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  for(var k in o)
    if(new RegExp("("+ k +")").test(fmt))
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  return fmt;
}

相关推荐

    通过正则表达式生成数据

    2. **利用编程语言**:大多数编程语言如Python、Java、JavaScript等都内置了正则表达式的支持,并提供了方法来生成符合正则表达式的随机字符串。例如,Python的`re`模块配合`random.choice`或`random.choices`可以...

    源码(精通正则表达式&实战正则表达式)

    本资源“源码(精通正则表达式&实战正则表达式)”专注于JavaScript环境下的正则表达式学习,通过一系列视频教程和配套源码,帮助开发者提升对正则表达式的理解和应用能力。 首先,"精通正则表达式五部视频"可能涵盖...

    JS正则表达式大全【6】

    【JS正则表达式大全【6】】这篇文章主要介绍了...在实际开发中,无论是处理用户输入的数据,还是进行数据清洗和格式化,正则表达式都能发挥重要作用。因此,深入学习和理解JavaScript中的正则表达式是非常必要的。

    boost库中的正则表达式

    2. **构造函数**:`basic_regex`可以通过一个包含正则表达式模式的字符序列和一组选项标志进行初始化。构造函数`explicit basic_regex(const charT* p, flag_type f=regex_constants::normal)`接受一个字符串指针`p`...

    正则表达式经典实例

    - **格式化操作**:例如,如何将日期字符串转换为统一格式,或者去除字符串中的空白字符等。 - **文本处理**:例如,提取网页中的URL链接、识别特定词汇或短语出现的位置等。 - **复杂结构匹配**:例如,在XML或...

    JS的正则表达式进行验证

    虽然这段代码未直接使用正则表达式进行日期格式验证,但结合正则表达式的应用,我们可以创建更全面的日期验证逻辑。 一个简单的日期格式验证正则表达式可以是:`/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|...

    正则表达式只可以输入只允许输入中文、数字、字母、下划线

    ### 正则表达式知识点详解 #### 一、正则表达式基础介绍 正则表达式(Regular Expression)是一种强大的文本处理工具,在编程语言中被广泛应用于字符串的搜索与替换等...这对于数据验证、格式化等应用场景非常有用。

    正则表达式的妙用

    如果网站采用了动态加载或JavaScript来隐藏链接,可能还需要使用到如Selenium或Scrapy这样的Web自动化或爬虫框架,配合正则表达式来解析动态内容。 标签"老司机"暗示这个任务需要一定的经验和技巧,因为正则表达式...

    常用Javascript正则表达式汇总

    JavaScript中的正则...以上是JavaScript中的一些基本正则表达式示例,它们在处理文本、验证用户输入、格式化数据等方面非常有用。掌握正则表达式是JavaScript开发中的重要技能,能够极大地提升你的代码效率和质量。

    正则表达式工具The Regulator

    4. **代码生成**:对于编写代码时需要使用的正则表达式,The Regulator可以生成多种编程语言的代码片段,如Java、Python、JavaScript等,大大提高了开发效率。 5. **多种引擎支持**:它不仅支持标准的正则表达式,...

    JavaScript经典正则表达式实战

    在JavaScript中,正则表达式是一种强大的工具,可以帮助开发者实现复杂的数据验证、文本提取和格式化等功能。下面我们将深入探讨JavaScript经典正则表达式的实战应用。 1. **正则表达式基础** - **创建方式**:...

    C++ 正则表达式 使用手册 源代码

    - `std::regex_replace()` 函数允许你将字符串中符合正则表达式的部分替换为新的字符串,这对于字符串的格式化和清理非常有用。 7. **正则表达式语法** - C++的 `<regex>` 库支持ECMAScript风格的正则表达式,这...

    6款正则表达式工具

    RegExBuilder是一款强大的正则表达式构建和测试工具,提供了一个直观的界面,允许用户通过图形化方式创建、编辑和测试正则表达式,同时提供了丰富的功能,如: 1. **实时预览**:在构建正则表达式时,可以即时看到...

    正则表达式列举 代码 项目中直接使用

    正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、...这些正则表达式及其应用场景展示了在实际项目中如何高效地使用正则表达式来处理各种文本问题,无论是文本清洗、格式化还是数据验证,都是不可或缺的工具。

    神器验证正则表达式去除复制代码前的序号

    总之,正则表达式是IT行业中的一个强大工具,对于处理文本数据、验证模式以及自动化处理任务具有不可替代的作用。掌握正则表达式,对于任何程序员或IT从业者来说,都是提高工作效率的重要技能。

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...

    正则表达式生成和检验工具

    - **库和框架**:如Perl的Regexp::Common库,JavaScript的regexpu转换工具,帮助生成和优化跨引擎兼容的正则表达式。 综上所述,正则表达式生成和检验工具在IT行业中起着关键作用,它可以帮助开发者快速构建和验证...

Global site tag (gtag.js) - Google Analytics