非主流javascript教学(七)
每一个没有在javascript里面写过正则表达式的前端工程师, 上辈子都是折翼的天使,
你伤不起啊~~
用javascript , 就很难不用正则。
我们说:寻找节点的时候, 我们不是有 DOM吗, 不是有jQuery吗, 正则?多此一举了吧?
不过请记住:
1 你还能找到什么技术写起来比正则更装13吗?不能!
2 没有2了。 不能再2下去了。
我们用正则, 有很多地方:
1 ajax之后,分析。
当然, 有的人说,你太土了。 还正则, 我ajax拿到的从来都是JSON
呃, 这个问题, 我想说。。。 我经常在本地用Ajax来抓网页或者刷论坛的。 因为本地文件没有跨域的问题吗。
比如这样:
type: 'GET',
url: 'http://www.baidu.com/',
success: function(msg){
alert(msg);
}
});
注意要用IE, IE!!!
因为火狐相对规范一些, 做坏事难一些。你懂的。
so, 这个时候, 当然, 可以用$(msg)来处理。 但是我打赌你拿到这个东西之后会很想分析, 而不仅仅是查找节点。
2 验证。
大家都懂的, javascript最初就是为了验证而诞生的。 因此, 没有正则, 它混个屁啊!!
啊, 不对。 应该说:javascript这么高贵的语言怎么可能连正则都没有呢!!!!!!
然后问题来了:
1 既然javascript是一门面向对象的语言, 那它有正则表达式类吗?
肯定有!!!! 怎么会没有!!!你这是在鄙视高贵的javascript吗?
2 既然有, 那么我们可以去new喽?
当然可以!!怎么会不可以!!!你这是在鄙视高贵的javascript吗?
3 那, 你一定经常new喽?
当然。。。。不!!! 你这是在鄙视undefined吗?
=。=
我们知道, 正则的构造, 一般都比较慢。
比如,C#, 一般大家都会编译正则吗。 最不济也要做个正则的池, 在里面取。
此是题外话, 不多说了。
但是, 我们高贵的javascript, 怎么会做这么傻的事情呢?
我们天生就有池。 你只要使用字面量即可:
当你第二次用相同的字面量声明同一个正则的时候, 他们会自动指向同一个对象!
嗯, 很像C#的字符串驻留机制是吗?
有点吧。 C#肯定是照javascript抄的。 以微软的秉性, 没的跑。肯定的。
然后, 有了正则, 怎么办?match?
javascript里的方法叫exec。 要知道正则简直可以说是一门强大的语言。 用exec做名字一点不过分。
再说你能compile, 不能exec, 怎么说得过去呀!
不过我们验证一般只看对不对, 而不关心分组, 是不是?
所以一般用test方法就够了。
推荐直接test的理由有两个:
1 test快。
2 exec慢。 而且test能搞定的用exec太大动干戈了。
3 undefined同学是做测试出身的。
=。=
posted @ 2011-04-21 13:55 undefined 阅读(65) 评论(0) 编辑

