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

看板RegExp (正規表示式 Regular Expression)作者 (凱)時間10年前 (2014/05/29 01:34), 編輯推噓8(8017)
留言25則, 7人參與, 最新討論串1/1
請問高手 我若限定一定要10個數字 可以用正規處理嗎 -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.98.174 ※ 文章網址: http://www.ptt.cc/bbs/RegExp/M.1401298445.A.D42.html

05/29 01:36, , 1F
[0-9]{10} 不過印象中有些 regexp 不支援 {}
05/29 01:36, 1F

05/29 01:37, , 2F
唔, 應該要加個邊界: [^0-9][0-9]{10}[^0-9]
05/29 01:37, 2F

05/29 01:38, , 3F
如果你是要整個字串就只有 10 個數字那可以加 ^...$
05/29 01:38, 3F

05/29 01:38, , 4F
就變成 ^[0-9]{10}$ 這個樣子
05/29 01:38, 4F

05/29 01:45, , 5F
我是用php寫 認證手機 09開頭但是若輸入11個數字也是
05/29 01:45, 5F

05/29 01:45, , 6F
正確 我想用正規一次處理
05/29 01:45, 6F

05/29 04:38, , 7F
那就是樓上最後一個啦~
05/29 04:38, 7F

05/29 08:49, , 8F
因為是檢驗10碼的手機號碼^09[0-9]{8}$剛測一下好像可
05/29 08:49, 8F

05/29 12:29, , 9F
我想問一下,如果是要找出字串中的10位數字要怎麼找?
05/29 12:29, 9F

05/29 12:29, , 10F
就是10個數字的左右可以是任意字,但就不能是數字
05/29 12:29, 10F

05/29 13:30, , 11F
[^0-9]([0-9]{10})[^0-9] ?
05/29 13:30, 11F

05/29 13:30, , 12F
[^0-9]([0-9]{10})[^0-9] 這樣?(發現問號可能會誤解
05/29 13:30, 12F

05/29 15:51, , 13F
資質不好,看不太懂樓上的語法@@把^寫在[裡的用意是?
05/29 15:51, 13F

05/29 15:56, , 14F
印象中這是exception?也就是除了0-9以外的字
05/29 15:56, 14F

05/29 16:18, , 15F
原來^有兩種意思,感謝!!
05/29 16:18, 15F

05/29 16:19, , 16F
是的, 不過我後來想到這只能找到真的在中間的 10 位數
05/29 16:19, 16F

05/29 16:19, , 17F
有些 regexp 有 lookbehind/lookahead 這樣可以把邊界情形
05/29 16:19, 17F

05/29 16:21, , 18F
抓住; 如果沒有的話我記得好像也有方法做...
05/29 16:21, 18F

05/29 16:59, , 19F
php 有 (?=pattern) 跟 (?<=pattern)
05/29 16:59, 19F

05/29 17:10, , 20F
對齁...這個好像只能找中間的
05/29 17:10, 20F

05/29 17:10, , 21F
後來有想到用^$搭配|去辨別頭尾,但好像又會卡字
05/29 17:10, 21F

05/29 17:11, , 22F
^|[^0-9]([0-9]{10})[^0-9]|$ 這樣邏輯順序不對
05/29 17:11, 22F

05/29 17:12, , 23F
(^|[^0-9])([0-9]{10})([^0-9]|$) 這樣好像會卡字
05/29 17:12, 23F

05/29 17:15, , 24F
最好搭配(?:) non-capture group,而且|的效能會比較差
05/29 17:15, 24F

05/29 17:15, , 25F
能用look ahead/look behind最好
05/29 17:15, 25F
文章代碼(AID): #1JXXuDr2 (RegExp)
文章代碼(AID): #1JXXuDr2 (RegExp)