显示标签为“Javascript”的博文。显示所有博文
显示标签为“Javascript”的博文。显示所有博文

2015年5月25日

Javascript正则表达式笔记

由于最近项目需要从字符串中提取字串,具体地说是匹配实数集R(严格的说是有理数集Q)中的元素。网上找了一圈没一个能用的,不知道是不是我使用正则表达式的方法有问题。而且网上似乎转来转去的都是那么几篇文章,无奈只能自己来写。

由于不能预见字串会有几位小数,正负也不一定,所以下面的正则表达式匹配的是一切实数(严格的说是有理数):

var str1 = "transform(-332.44,567)";
var str2 = "transform(0,-42)";

var regExp = str1.match("/0|-?\d+[.]?\d+/g");     // regExp=[-332.44, 567]
regExp = str2.match("/0|-?\d+[.]?\d+/g");       // regExp=[0, -42]

看到几乎所有的文章都只记录了表达式,而没有告诉读者表达式是如何写出来的,读者往往只能知其然而不知其所以然。这里再说一下这个正则表达式书写的过程。其实只要根据实数(严格的说是有理数)的判据就容易得到:

  • 0
  • 可能有一个负号(负数),或者没有(正数)
  • 可能有一个小数点(小数),或者没有(整数)

所以,表达式中,第一部分将0提出来,单独作为一个可能即“0|”;第二部分,即整数部分,为1~n位数字,即”[0-9]{1,}“,可简写为“[0-9]+”,进而继续简写为“\d+”;第三部分,即小数点,可能存在也可能不存在,故写为“[.]?”;小数部分同整数部分;最后,再加上js的正则表达式搜索指令g表示是一个贪心模式,即可匹配出全部的数字。

2015年3月1日

浅尝油猴脚本

好久不写博客,以前Blogger上配置的CSS都忘了是哪些了,想了半天才记起来≶p>里的内容有首行缩进。由于种种原因,翻墙是越来越难了,这也给我偷懒带来了理由。上网的时候经常会遇到一些不便,比如:该帖子回复后可见、下载链接缺头少尾等等。于是产生了改造网页的想法。先后尝试了Chrome插件和油猴脚本,最终还是觉得油猴脚本更适合干这活儿——简单、直接。目前写了两个简单的脚本,一个用来解决回复后可见,一个用来搞定下载链接的。我将逐一解释其应用场景。

2013年5月12日

Date.parse()在Chrome,FireFox,IE中的差异

我翻了好几篇关于Javascript中Date.parse()方法的博文。它们着重讲的是日期格式的问题,需要以Date.parse("MM/dd/yyyy HH:mm:ss")这样的形式方能在3种浏览器中正确运行。最近在做一个需要实时绘图的项目,其时间精确到毫秒,这时Date.parse()在3个浏览器中就有了不同的表现。请看以下代码:

var now=Date.parse("05/12/2013 15:24:27.53");

这行代码在Chrome里可以正确运行时间的毫秒部分也能正确地被转换。但同样的代码到了FF和IE里就报错了。经过排除,确认是这两种浏览器的Date.parse()方法最多支持到秒级。后来我又尝试了"05/12/2013 15:24:27,53","05/12/2013 15:24:27 53","05/12/2013 15:24:27,530","05/12/2013 15:24:27 530"等形式的字符串,均无法正确地在FF和IE中转换。如果要想解决这个问题,只好采取一种很别扭的方法:把字符串从秒处截断,前面的部分在3个浏览器中都可以正确转换。转换完毕后把后一部分再加上。