作者MOONRAKER (㊣OGC-1701)
看板Programming
標題Re: [請益] asp.net的正規表示式
時間Thu Oct 23 14:41:35 2008
※ 引述《hoverwolf (陷入無盡幸福深淵)》之銘言:
: ●驗證郵遞區號
: 1. 3位數字,如198
: 2. 3位數字加2位數字,如198-24
: 3. 3位數字加4位數字,如198-3216
: 可檢查出上列三種郵遞區號格式是:^\d{3}-d{4}$|^\d{3}=\d{2}$|^\d{3}
: 上面的格式實在看不懂它是怎麼解出來的,雖然有猜到{3}是3位數字,但是不知為什麼要再加上d{3}
: 而d{3}和{3}有什麼不一樣呢??另外像^\和$|這些是代表什麼呢??實在不懂啊>"<
你跟初入門看英文文章的人一樣有斷句問題 |D
微&軟的regex 都故意和別人不一樣,但是基本的共通處還是有的
| 表示或(or)
所以你看到的一個regex其實是三個:
^\d{3}-\d{4}$
或 ^\d{3}=\d{2}$
或 ^\d{3}
^ 表示字串開頭
$ 表示字串結尾。以上這三個都符合慣例。
\d 正常習慣沒有 \ 一個字當作控制碼的,看到 \d 就要想 \d 整包是
一個控制碼,這裡也是一樣。\d表示[:digit:],也就是[0-9]。
{k} 表示前面的符號重覆 k 次,至於為什麼,因為java也是這樣。
寫到這裡我看這郵遞區號必定不是台灣的郵遞區號,台灣哪來七位數的郵遞區
號?中間也沒有 - 或 = 的。你這顯然是在微&軟的文件裡面找到的範例,那
為什麼不去找找他們關於regex的說明呢?
: 所以驗證電話號碼格式如下:
: \([0-9]{2,3}\][0-9]{2,4}-[0-9]{4}
{j, k} 容許重覆次數,最少 j 次,最多 k 次。
[0-9] 相當於 [0123456789]。上面有提到。同理[A-E]就是ABCDE。
: 上面的格式我不懂的是,(xx)的格式表示方法看來應該是\(代表表示(
: 那為什麼-不是用\-來表示?所以不懂什麼時候要用\什麼時候不用\
( ) 是regex控制字元,可以用來包住整包字元然後後面放{k},因此需要跳脫。
- 不是控制字元所以不要。你以上打錯了,應該是 \) 不是 \]。
: ●驗證EMail地址
: \W+([-+.']\W+)*@\W+([-.]\W+)*\.\W+([-.]\W+)*
: 上面的格式我就完全看不懂它在寫什麼了,也不知道怎樣的EMail如果來驗證的話其實是錯的Orz
: 請大大幫我解惑一下
\W 任意文字 ([A-Za-z])
+ 出現最少一次,最多無限次
[-.] 中括號內的文字符號其中一個
( ) 括號內整包當作一個單元
* 出現零到無限次,也就是說可以不要
: ●驗證URL
: http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?
? 前面的符號出現0或1次。
所以 http(s)? 就等於 (http|https)
要特別注意一個符號
\w 這和\W不一樣,大W是[A-Za-z],小w比大W更多,應該是包括
[0-9],在其他regex中也稱為[:alnum:] (alphabets and number)。
: 其實打到這邊我就在想,是不是這些格式都是固定的勒=.=?
當然是固定的 -_-
再說一遍,你何不找.NET regular expression的線上資源來看?
--
BATCH 03 : 買張床 - 切達大俠 - 伐木人之歌 -
http://tinyurl.com/3zpyx5
[B4準備中]: 謳歌金錢(7/02) - 單車超人(7/23) -
http://tinyurl.com/66v6vq
[ 番外篇 ]: 包租婆也有過當羅莉的時候(7/17) -
http://tinyurl.com/6j4ale
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
■ 蒙帝派松正體中文計畫 ■ Spam-a-lot and enjoy the pythonesque delight!
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ http://www.youtube.com/user/JamesBondXD▄▄
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.208.87
推 hoverwolf:其實對這些並不熟悉,但想要多學學,所以 211.72.242.199 10/23 16:24
→ hoverwolf:我上面是買書來看的例子=.=" 211.72.242.199 10/23 16:25
→ hoverwolf:很謝謝大大無私的教導<(_ _)> 211.72.242.199 10/23 16:25
→ hoverwolf:PS.是\)沒錯,我打錯了 211.72.242.199 10/23 16:32
→ MOONRAKER:咦?書上沒有對regex各個符號的說明嗎? 59.115.211.53 10/23 16:50
→ MOONRAKER:以上那是作者本人分享他以前投稿的regex 59.115.211.53 10/23 16:52
→ MOONRAKER:文章的網頁,你抓下來看過記得謝謝他 59.115.211.53 10/23 16:53
※ 編輯: MOONRAKER 來自: 59.115.219.47 (10/24 02:13)
→ MOONRAKER:修改一些沒寫到的地方。 59.115.219.47 10/24 02:14
推 hoverwolf:MO大真的很謝謝你的詳解 211.72.242.199 10/24 14:30
→ hoverwolf:因書上是沒有對REGEX有說明,又想搞懂,才 211.72.242.199 10/24 14:31
→ hoverwolf:上來問問:P 等等回完會好好再去看一下 211.72.242.199 10/24 14:32
→ hoverwolf:另一位大大的網址XD 211.72.242.199 10/24 14:33
推 hoverwolf:大大,再請問你一個問題 211.72.242.199 10/24 14:57
→ hoverwolf:你說[-.]中括號內文字符號其一是因為 211.72.242.199 10/24 14:58
→ hoverwolf:中括號嗎 211.72.242.199 10/24 14:59
→ MOONRAKER:是的 類似用法如[ABC] [A-Z]等等 59.115.199.159 10/24 15:05
→ hoverwolf:那[-+.']裡的' 是代表什麼意思@@? 211.72.242.199 10/24 15:08
→ hoverwolf:哦哦!! 211.72.242.199 10/24 15:08
→ MOONRAKER:我想應該沒有特殊意思 我也不很清楚 59.115.203.98 10/24 21:34
→ MOONRAKER:你可以實驗看看,做內含'的字串來測試 59.115.203.98 10/24 21:34