作者arnold0613 (凱)
看板RegExp
標題[問題] 正規表達式可以判短長度嗎
時間Thu May 29 01:34:02 2014
請問高手 我若限定一定要10個數字 可以用正規處理嗎
--
Sent from my Android
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.98.174
※ 文章網址: http://webptt.com/m.aspx?n=bbs/RegExp/M.1401298445.A.D42.html
1F:推 LPH66:[0-9]{10} 不過印象中有些 regexp 不支援 {} 05/29 01:36
2F:→ LPH66:唔, 應該要加個邊界: [^0-9][0-9]{10}[^0-9] 05/29 01:37
3F:→ LPH66:如果你是要整個字串就只有 10 個數字那可以加 ^...$ 05/29 01:38
4F:→ LPH66:就變成 ^[0-9]{10}$ 這個樣子 05/29 01:38
5F:→ arnold0613:我是用php寫 認證手機 09開頭但是若輸入11個數字也是 05/29 01:45
6F:→ arnold0613:正確 我想用正規一次處理 05/29 01:45
7F:→ danny8376:那就是樓上最後一個啦~ 05/29 04:38
8F:→ arnold0613:因為是檢驗10碼的手機號碼^09[0-9]{8}$剛測一下好像可 05/29 08:49
9F:推 filiaslayers:我想問一下,如果是要找出字串中的10位數字要怎麼找? 05/29 12:29
10F:→ filiaslayers:就是10個數字的左右可以是任意字,但就不能是數字 05/29 12:29
11F:推 KawasumiMai:[^0-9]([0-9]{10})[^0-9] ? 05/29 13:30
12F:→ KawasumiMai:[^0-9]([0-9]{10})[^0-9] 這樣?(發現問號可能會誤解 05/29 13:30
13F:推 filiaslayers:資質不好,看不太懂樓上的語法@@把^寫在[裡的用意是? 05/29 15:51
14F:→ KawasumiMai:印象中這是exception?也就是除了0-9以外的字 05/29 15:56
15F:推 filiaslayers:原來^有兩種意思,感謝!! 05/29 16:18
16F:推 LPH66:是的, 不過我後來想到這只能找到真的在中間的 10 位數 05/29 16:19
17F:→ LPH66:有些 regexp 有 lookbehind/lookahead 這樣可以把邊界情形 05/29 16:19
18F:→ LPH66:抓住; 如果沒有的話我記得好像也有方法做... 05/29 16:21
19F:推 s25g5d4:php 有 (?=pattern) 跟 (?<=pattern) 05/29 16:59
20F:推 KawasumiMai:對齁...這個好像只能找中間的 05/29 17:10
21F:→ KawasumiMai:後來有想到用^$搭配|去辨別頭尾,但好像又會卡字 05/29 17:10
22F:→ KawasumiMai:^|[^0-9]([0-9]{10})[^0-9]|$ 這樣邏輯順序不對 05/29 17:11
23F:→ KawasumiMai:(^|[^0-9])([0-9]{10})([^0-9]|$) 這樣好像會卡字 05/29 17:12
24F:→ mars90226:最好搭配(?:) non-capture group,而且|的效能會比較差 05/29 17:15
25F:→ mars90226:能用look ahead/look behind最好 05/29 17:15