作者piligo (pili)
看板PHP
標題Re: [請益] 在switch的case是否可用RE來判斷?
時間Tue Jun 20 11:29:58 2006
※ 引述《ybite (水中影)》之銘言:
: ※ 引述《piligo (pili)》之銘言:
: : 謝謝 ago1414 emn178 dinos3 提供相關的資訊與建議
: : 那針對RE這部份,大家都建議採用if是因為只有他能用RE嗎?
: : 因為看到的書本都寫當有多個判斷式可用switch,那現在又改回if,不知只是為了可以
: : 使用RE,還是別有原因?
: : 看到preg_match這個函數之前,有看到另一個ereg,查了一下相關兩者的不同
: : 除了preg_match是Perl的函數,在實際使用上還有哪些差異嗎?
: : 謝謝
: ereg/eregi 是使用 POSIX extended 的正規表示式
: preg_match 是使用 Perl 語言下的正規表示式
: 語法上有些差異 :P
嗯嗯了解
我在使用 * + ? 這三個有一些疑問 ^(9[0-9])([0][3,5,6])([0-9]{2})(0[0-5])*$
年 月 日 流水號
當我使用 * 只要符合92032003 or 920320 就為真,因為我有查了那三個符號的定義
如下,那把 * 改成 + 也就變成流水號沒寫就為假,那試了 ? 怎麼都跟 * 的反應一
模一樣,這要怎樣套才會看出效果呢?還有他的more的定義是什麼呢?
想成更多的話,那我寫成92032003XXXX也是假,所以 1 和 more 如何看出他的差異?
* = 0 or more
+ = 1 or more
? = 0 or 1
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.75.114
→ piligo:自打嘴巴..忘了*?+左邊已經用0[0-5]侷限範圍了,我在測試時 06/20 11:36
→ piligo:用到範圍外的字元...@@ 06/20 11:37
→ piligo:還有一點,那時候被只針對左邊一個字元作判斷所誤解,原來 06/20 11:42
→ piligo:(0[0-5])變成00 01 02 03 04 05這樣的組合來當一個字而不是 06/20 11:43
→ piligo:01111 02222 03333 04444 05555要010101 020202 030303才對 06/20 11:44
→ piligo:另外補充當流水號寫01020304他會取最後一組也就是04 06/20 12:49
→ piligo:那有辦法取全部的值嗎?還是他只拿最後順位是先天的限制? 06/20 12:59