Amazon Ads

2014年3月27日 星期四

【JS筆記】正規表示式(Regular Expression)的「^」與「$」特殊符號

若想要有個方便的工具來練習JavaScript,可以看看使用Rhino shell來執行JavaScript這一篇。

我先來寫一個最簡單的表示式:
var pat1 = /java/;
var str1 = 'javascript'; 
var str2 = 'i love java'; 
pat1.test(str1);  //結果為 true

pat1.test(str2);  //結果為 true
因為上列比對的兩個字串str1str2中,都有全為小寫的java,所以比對的結果都會回傳true

用白話文來講,就是比對的字串中,只要有java就能匹配成功。

再來我們在表示式中,加入一個^的特殊字元:
var pat2 = /^java/; 
var str1 = 'javascript';
var str2 = 'I love java';

pat2.test(str1);  //結果為 true
pat2.test(str2);  //結果為 false
上列比對的兩個字串中,都有全為小寫的java,但這次str1比對的結果回傳true,而str2比對的結果回傳false

由上面的例子我可以知道,在正規表示式中,加入^後,則比對的目標字串的起始位置,要含有^後面的字元或字串,才能成功匹配,才會回傳true,例如上列的str1起始四個字元與定義的模式java匹配,而str2雖然含有java,但它不在一開頭的位置上。

用白話文來講,使用這樣的比對模式時,就是比對的字串,開頭的四個字元一定要是java才能匹配成功。

這裡要注意的是,^要放在比對模式的第一個字元,若放在其他地方,則有「否定」的意思,這之後會去探討。

延續上面的例子,再來看另一個特殊字元$,它若放在比對模式的「最後一個字元」,則表示要比對的字串,最後結尾的部份,要符合$符號前面定義的模式,才能匹配成功。

若它是放在比對模式中的其他位置,是沒有特殊意義的,這點要注意。

看看下面的範例。
var pat3 = /java$/;
pat3.test(str1); //結果為false
pat3.test(str2); //結果為true,因為str2是java結尾,所以比對成功

var str3 = 'I love jave';
pat3.test(str3); //結果為 false
var str4 = 'I love javaa';
pat3.test(str4); //結果為 false
所以用白話文來講,使用這樣的比對模式時,就是比對的字串,結尾的最後四個字元一定要是java才能匹配成功。

我知道了^$在正規表示中的意思了,那下列的比對模式,要怎樣的字串才能匹配成功呢?
var pat4 = /^java$/;
有時間就try一下吧!

參考資料: