是非之地

博客园首席处男所在的小窝

 

2011年4月21日

非主流javascript教学(七)

每一个没有在javascript里面写过正则表达式的前端工程师, 上辈子都是折翼的天使,

你伤不起啊~~

 

用javascript , 就很难不用正则。

我们说:寻找节点的时候, 我们不是有 DOM吗, 不是有jQuery吗, 正则?多此一举了吧?

 

不过请记住:

1 你还能找到什么技术写起来比正则更装13吗?不能!

2 没有2了。 不能再2下去了。

 

我们用正则, 有很多地方:

1 ajax之后,分析。

  当然, 有的人说,你太土了。 还正则, 我ajax拿到的从来都是JSON

  呃, 这个问题, 我想说。。。 我经常在本地用Ajax来抓网页或者刷论坛的。 因为本地文件没有跨域的问题吗。

比如这样:

            $.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, 怎么会做这么傻的事情呢?

我们天生就有池。 你只要使用字面量即可:

 

 

var r_int = /^[0-9]+$/

 

当你第二次用相同的字面量声明同一个正则的时候, 他们会自动指向同一个对象!

嗯, 很像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) 编辑

导航

统计

公告