每一個沒有在javascript裡面寫過Regex的前端工程師, 上輩子都是折翼的天使,
你傷不起啊~~
用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!!!
因為Firefox相對規範一些, 做壞事難一些。你懂的。
so, 這個時候, 當然, 可以用$(msg)來處理。 但是我打賭你拿到這個東西之後會很想分析, 而不僅僅是尋找節點。
2 驗證。
大家都懂的, javascript最初就是為了驗證而誕生的。 因此, 沒有正則, 它混個屁啊!!
啊, 不對。 應該說:javascript這麼高貴的語言怎麼可能連正則都沒有呢!!!!!!
然後問題來了:
1 既然javascript是一門物件導向的語言, 那它有Regex類嗎?
肯定有!!!! 怎麼會沒有!!!你這是在鄙視高貴的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同學是做測試出身的。
=。=