[問題] 正規表達式可以判短長度嗎

作者: arnold0613 (凱)   2014-05-29 01:34:02
請問高手 我若限定一定要10個數字 可以用正規處理嗎
作者: LPH66 (-6.2598534e+18f)   2014-05-29 01:36:00
[0-9]{10} 不過印象中有些 regexp 不支援 {}唔, 應該要加個邊界: [^0-9][0-9]{10}[^0-9]如果你是要整個字串就只有 10 個數字那可以加 ^...$就變成 ^[0-9]{10}$ 這個樣子
作者: arnold0613 (凱)   2014-05-29 01:45:00
我是用php寫 認證手機 09開頭但是若輸入11個數字也是正確 我想用正規一次處理
作者: danny8376 (釣到一隻猴子@_@)   2014-05-29 04:38:00
那就是樓上最後一個啦~
作者: arnold0613 (凱)   2014-05-29 08:49:00
因為是檢驗10碼的手機號碼^09[0-9]{8}$剛測一下好像可
作者: filiaslayers (司馬雲)   2014-05-29 12:29:00
我想問一下,如果是要找出字串中的10位數字要怎麼找?就是10個數字的左右可以是任意字,但就不能是數字
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 13:30:00
[^0-9]([0-9]{10})[^0-9] ?[^0-9]([0-9]{10})[^0-9] 這樣?(發現問號可能會誤解
作者: filiaslayers (司馬雲)   2014-05-29 15:51:00
資質不好,看不太懂樓上的語法@@把^寫在[裡的用意是?
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 15:56:00
印象中這是exception?也就是除了0-9以外的字
作者: filiaslayers (司馬雲)   2014-05-29 16:18:00
原來^有兩種意思,感謝!!
作者: LPH66 (-6.2598534e+18f)   2014-05-29 16:19:00
是的, 不過我後來想到這只能找到真的在中間的 10 位數有些 regexp 有 lookbehind/lookahead 這樣可以把邊界情形抓住; 如果沒有的話我記得好像也有方法做...
作者: s25g5d4 (function(){})()   2014-05-29 16:59:00
php 有 (?=pattern) 跟 (?<=pattern)
作者: KawasumiMai (さあ、死ぬがいい)   2014-05-29 17:10:00
對齁...這個好像只能找中間的後來有想到用^$搭配|去辨別頭尾,但好像又會卡字^|[^0-9]([0-9]{10})[^0-9]|$ 這樣邏輯順序不對(^|[^0-9])([0-9]{10})([^0-9]|$) 這樣好像會卡字
作者: mars90226 (火星人)   2014-05-29 17:15:00
最好搭配(?:) non-capture group,而且|的效能會比較差能用look ahead/look behind最好

Links booklink

Contact Us: admin [ a t ] ucptt.com