[請益] 正規式苦手請益

看板PHP作者 (ChaN)時間7年前 (2017/12/28 18:27), 7年前編輯推噓-2(7964)
留言80則, 11人參與, 8年前最新討論串1/1
請教各位怎麼比對一個字串只能符合數字、英文、底現、橫線、冒號,但結尾不能是冒號的寫法呢 目前最接近的寫法如下 $strings = [ 'aaa:bbb-cool', 'aaa-22-bbb_cool3', 'aaa:bbb-cool:', 'aaa_bbb-cool:', 'aaa_bbb-cool', 'bbbb:>dd', 'hihi%', '大家好', '0000000000', '11111:2222:3333', '11111:2222:3333:', 'DDD@@@1', '大家好', ]; $pattern = '/[0-9a-zA-Z]+$/i'; foreach ($strings as $string) { var_dump($string.' is '.preg_match($pattern, $string)); } 不過不知道為什麼 DDD@@@1 跟 bbbb:>dd 也符合 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.124.224.43 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1514456847.A.7D5.html

12/28 18:51, 7年前 , 1F
阿不就 ^[\w-:]+[\w-]$
12/28 18:51, 1F

12/28 19:56, 7年前 , 2F
這好像差有點多 XD
12/28 19:56, 2F

12/28 23:39, 7年前 , 3F
主要觀念是你要分開描述的東西就分開寫
12/28 23:39, 3F

12/28 23:39, 7年前 , 4F
至於 \w 就只是 [0-9A-Za-z_] 的簡寫而已
12/28 23:39, 4F

12/29 15:33, 7年前 , 5F
阿你是跑過了沒 跑過完全符合才會貼上來
12/29 15:33, 5F

12/29 15:34, 7年前 , 6F
regex一撇都沒有就覺得可以用眼睛看 也是奇葩
12/29 15:34, 6F
不好意思,我會說差有點多是因為我的命題是「尾部不能是冒號」 當然你的作法就上面我亂打的測試資料來講這段跑過去都會正確 所以我並沒有說你「做錯」,但我想學的是尾部不能是 xx 的觀念跟作法

12/31 12:07, 7年前 , 7F
一樓正解,原PO的才是差有點多... 除非題目敘述有錯
12/31 12:07, 7F
我一開始是差很多,因為我一直往尾巴不能是 xx 這塊鑽

01/02 09:54, 8年前 , 8F
^[\w_\-:]+(?<!:)$
01/02 09:54, 8F
我後來去爬文也是用你這個寫法 /^[\w:-]+(?<!:)$/,只是我並沒有很明白 (?<!:) 這個的意思,可以請教你一下嘛

01/02 09:58, 8年前 , 9F
原來\w有底線了 沒注意到
01/02 09:58, 9F
※ 編輯: chan15 (122.116.234.173), 01/03/2018 21:31:39

01/03 22:58, 8年前 , 10F
不好意思,(1)全部要符合\w:-(2)最後不要符合冒號
01/03 22:58, 10F

01/03 23:01, 8年前 , 11F
標準做法就是那樣 不需要用到regex其他複雜的功能
01/03 23:01, 11F

01/03 23:03, 8年前 , 12F
你那麼愛學look-ahead 到底知不知道[^]的功能
01/03 23:03, 12F

01/03 23:04, 8年前 , 13F
我認為你不知道 從你一開始寫的就看得出來
01/03 23:04, 13F

01/03 23:06, 8年前 , 14F
不過還不會跑就努力學飛到月球 那我也不應該阻止 顆
01/03 23:06, 14F
坦白說,我不知道你在不高興什麼,[^]是不含的意思這我清楚 我不知道你是不是試圖跟我講 /^[\w-:]+[^:]$/ 這個寫法 是的話這個不會過的 hihi% <- 這個就會是 true,也是因為這個 case 我才在擔心 [\w-]$ 會不會在某個我不確定的內容會 pass 我也知道 \w 代表什麼,只是我忘記我哪個組合的寫法這樣下中文會過 才改成 A-Za-z0-9,總之就是從我留言以後的那近兩小時內試了很多寫法 包括你的那種,其實我已經寫出來了,只是我還是在想怎麼達成最後不可以是冒號這件事 所以回來看到你的才說不是我要的,在今天回來看之前已經定調 /^[\w:-]+(?<!:)$/ 但我承認還一知半解這個用法,如果有求知的欲望被你說成這樣,我也不知道該說什麼 還是感謝你熱心的回覆 ※ 編輯: chan15 (122.116.234.173), 01/04/2018 03:04:22

01/04 10:20, 8年前 , 15F
不懂就問,不要用嗆的激將法擠出知識,很糟的惡習
01/04 10:20, 15F

01/04 10:22, 8年前 , 16F
不要去評論你不懂的東西是對是錯,只是自曝其短
01/04 10:22, 16F

01/04 10:25, 8年前 , 17F
你的行為才是給網友為陌生人免費教學的熱誠潑冷水
01/04 10:25, 17F
不好意思,我真的不知道我哪邊嗆了.... ※ 編輯: chan15 (59.124.224.43), 01/04/2018 11:21:23

01/04 14:49, 8年前 , 18F
?<!的用法可以去google lookbehind
01/04 14:49, 18F

01/04 16:34, 8年前 , 19F
好的,感謝你
01/04 16:34, 19F

01/06 11:20, 8年前 , 20F
我直接跟你講 你PO錯版了... 還嗆人@@ 你看看你回啥話吧
01/06 11:20, 20F

01/08 16:46, 8年前 , 21F
到底哪裡嗆可以明講嗎,我是真的沒發現,有人回答我問題
01/08 16:46, 21F

01/08 16:46, 8年前 , 22F
我嗆人幹嘛,那句真的冒犯了提點我一下我願意致歉的
01/08 16:46, 22F

01/10 08:08, 8年前 , 23F
一開始人家告訴你做法,你卻在講別人有沒有做錯,這是導
01/10 08:08, 23F

01/10 08:08, 8年前 , 24F
火線
01/10 08:08, 24F

01/10 08:09, 8年前 , 25F
然後你坦白說的那整段就是在嗆了
01/10 08:09, 25F

01/10 08:10, 8年前 , 26F
我只能告訴你一件事:發問者是沒有資格講人權的
01/10 08:10, 26F

01/10 08:11, 8年前 , 27F
這話聽起來不合理,但發問者同時也就是受教者,拋出什麼
01/10 08:11, 27F

01/10 08:11, 8年前 , 28F
問題就只能把人的回答和意黨單全收,沒有資格囉唆。如果你
01/10 08:11, 28F

01/10 08:11, 8年前 , 29F
硬要問為什麼,那是因為要學要知道的人是你,不是回答的人
01/10 08:11, 29F

01/10 08:14, 8年前 , 30F
然後發問的人永遠都會忘記的事情是:當你拋出問題有人回
01/10 08:14, 30F

01/10 08:14, 8年前 , 31F
應你答案,不管好或壞起碼人家願意理你,提點你。如果人家
01/10 08:14, 31F

01/10 08:14, 8年前 , 32F
壓根就不想理你那你才真的慘了
01/10 08:14, 32F
發問者要對回答照單全收,沒有資格囉唆?這是這個版的風格還是你個人風格? 完全不能接受,我第一次聽到討論版是不能對答案有疑問的 我就是真心不知道為什麼他要用那樣的口氣回我我才反問我真的不知道他在氣什麼 但看到接著幾個人的發言,我覺得應該是我自己誤會這個地方了 ※ 編輯: chan15 (59.124.224.43), 01/10/2018 16:42:30

01/10 17:03, 8年前 , 33F
不要去評論你不懂的東西是對是錯+1 教別人最討厭遇到這種
01/10 17:03, 33F

01/10 17:03, 8年前 , 34F
的 自己沒去搞懂也至少要跑一次看看 都沒做就用想像力跟別
01/10 17:03, 34F

01/10 17:03, 8年前 , 35F
人揮
01/10 17:03, 35F

01/10 17:03, 8年前 , 36F
一樓的做法就已經符合你要的東西了 你在二樓卻跟別人說差
01/10 17:03, 36F

01/10 17:03, 8年前 , 37F
很多????就算你後來補充一堆話也只代表一開始原文敘述
01/10 17:03, 37F

01/10 17:03, 8年前 , 38F
很爛而已 你還是不該那樣回好心幫你的一樓
01/10 17:03, 38F

01/10 18:21, 8年前 , 39F
如果你是付費發問就算了,但你不是……
01/10 18:21, 39F

01/10 18:22, 8年前 , 40F
這種情形下還要要求別人態度如何如何我才真是醉了~~
01/10 18:22, 40F

01/10 18:23, 8年前 , 41F
有疑問你可以提,但沒資格質疑別人的「態度」
01/10 18:23, 41F

01/10 18:24, 8年前 , 42F
除非你付相應價值的錢,那別人就會好聲好氣的回應你。
01/10 18:24, 42F

01/10 18:25, 8年前 , 43F
多少人都不明白自己明明就是無償跟對方要求東西……
01/10 18:25, 43F

01/10 18:25, 8年前 , 44F
還在那以為別人對你的好該是理所當然???
01/10 18:25, 44F

01/11 23:24, 8年前 , 45F
一樓做法的問題是如果以後要擴充條件的話要寫兩次
01/11 23:24, 45F

01/11 23:24, 8年前 , 46F
我覺得你問問題的技巧還要加強
01/11 23:24, 46F

01/11 23:27, 8年前 , 47F
類似的問題我也問過https://goo.gl/auJTTh
01/11 23:27, 47F

01/11 23:27, 8年前 , 48F
我會把範例程式碼 跟解題的思路、期望的結果寫出來
01/11 23:27, 48F

01/11 23:28, 8年前 , 49F
像你是問符合範例的做法 當然板友就給你符合的表達式了
01/11 23:28, 49F

01/14 09:13, 8年前 , 50F
這年頭裝傻的人最厲害。給正解還在那邊五四三。你最厲
01/14 09:13, 50F

01/14 09:13, 8年前 , 51F
害好不好。我也沒有嗆人唷。呵呵。奇文共賞。
01/14 09:13, 51F

01/19 23:23, 8年前 , 52F
這邊老人的語氣就是這種格調,微帶點氣、微帶點酸....
01/19 23:23, 52F

01/19 23:24, 8年前 , 53F
你只要記得別戳破那種感覺
01/19 23:24, 53F

01/19 23:26, 8年前 , 54F
你這邊真正的敗筆,是謙卑的想弄清楚老人為什麼莫名生氣
01/19 23:26, 54F

01/19 23:28, 8年前 , 55F
因為戳破了....就會..大家都懂...老人面子要顧...
01/19 23:28, 55F

01/19 23:44, 8年前 , 56F
原PO2樓用詞語氣表情符號,我初看的解讀就是原PO後來解釋的
01/19 23:44, 56F

01/19 23:45, 8年前 , 57F
居然能惹怒這麼多人,讓我忍不住出來提點原PO
01/19 23:45, 57F

01/19 23:47, 8年前 , 58F
求知慾望對原PO你能力很幫助(繼續保持)
01/19 23:47, 58F

01/19 23:48, 8年前 , 59F
但要問更深入前,最好能去確定對方有此雅量
01/19 23:48, 59F

01/19 23:49, 8年前 , 60F
真心想教人、不怕麻煩、不怕被問倒(互相漏氣求進步)
01/19 23:49, 60F

01/19 23:51, 8年前 , 61F
如果有人叫你不管好壞都要照單全收的
01/19 23:51, 61F

01/19 23:52, 8年前 , 62F
那個人是在害你,如果哪天倒楣學到錯誤的觀念呢?
01/19 23:52, 62F

01/19 23:57, 8年前 , 63F
推文讓我想起,以前看到推文某人的應徵履歷,感覺怪怪略過
01/19 23:57, 63F

01/19 23:59, 8年前 , 64F
幸好當時直接略過,果真省了點時間
01/19 23:59, 64F

01/20 00:01, 8年前 , 65F
對了,以上不是說全部老人,有些老人是真的有心回覆解惑
01/20 00:01, 65F

01/20 00:02, 8年前 , 66F
想這邊也是有幾個感覺是真的為了幫你解決問題的
01/20 00:02, 66F

01/20 00:03, 8年前 , 67F
像這篇
01/20 00:03, 67F

01/20 12:06, 8年前 , 68F
誰才是真的在害人呢?誰才是真的在幫人呢?
01/20 12:06, 68F

01/20 12:07, 8年前 , 69F
真正的敗筆,是把問題發洩到別人的態度上了。
01/20 12:07, 69F

01/20 12:07, 8年前 , 70F
而不是持續追求問題的本質。
01/20 12:07, 70F

01/20 12:08, 8年前 , 71F
能夠誤解「照單全收」的意思然後來一長串推文我也是醉了…
01/20 12:08, 71F

01/20 12:09, 8年前 , 72F
而且還是在本板查無文章的人在說道理………一整個怪
01/20 12:09, 72F

01/20 13:47, 8年前 , 73F
有夠無聊。樓上幾位到底有啥好吵。好像小朋友一樣一定
01/20 13:47, 73F

01/20 13:47, 8年前 , 74F
要吵到有個輸贏。
01/20 13:47, 74F

01/20 14:08, 8年前 , 75F
樓上息怒XD……
01/20 14:08, 75F

01/20 14:12, 8年前 , 76F
雖然我蠻好奇某x說的應徵履歷是誰的………(當然不可能是我
01/20 14:12, 76F

01/20 14:13, 8年前 , 77F
我最後一次應徵工作已經是2007年了
01/20 14:13, 77F

01/22 00:52, 8年前 , 78F
我也覺得原 po 的表達讓人不太喜歡 XDDD
01/22 00:52, 78F

01/22 03:14, 8年前 , 79F
那就請版主教大家如何完成一個正規表達……問題及說謝謝
01/22 03:14, 79F

01/22 03:14, 8年前 , 80F
的方法XD
01/22 03:14, 80F
文章代碼(AID): #1QHCSFVL (PHP)
文章代碼(AID): #1QHCSFVL (PHP)