我先來寫一個最簡單的表示式:
var pat1 = /java/; var str1 = 'javascript'; var str2 = 'i love java'; pat1.test(str1); //結果為 true pat1.test(str2); //結果為 true因為上列比對的兩個字串
str1
和str2
中,都有全為小寫的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一下吧!
參考資料: