作者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!
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ https://www.youtube.com/user/JamesBondXD▄▄
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.208.87
1F:推 hoverwolf:其实对这些并不熟悉,但想要多学学,所以 211.72.242.199 10/23 16:24
2F:→ hoverwolf:我上面是买书来看的例子=.=" 211.72.242.199 10/23 16:25
3F:→ hoverwolf:很谢谢大大无私的教导<(_ _)> 211.72.242.199 10/23 16:25
4F:→ hoverwolf:PS.是\)没错,我打错了 211.72.242.199 10/23 16:32
5F:→ MOONRAKER:咦?书上没有对regex各个符号的说明吗? 59.115.211.53 10/23 16:50
7F:→ MOONRAKER:以上那是作者本人分享他以前投稿的regex 59.115.211.53 10/23 16:52
8F:→ MOONRAKER:文章的网页,你抓下来看过记得谢谢他 59.115.211.53 10/23 16:53
※ 编辑: MOONRAKER 来自: 59.115.219.47 (10/24 02:13)
9F:→ MOONRAKER:修改一些没写到的地方。 59.115.219.47 10/24 02:14
10F:推 hoverwolf:MO大真的很谢谢你的详解 211.72.242.199 10/24 14:30
11F:→ hoverwolf:因书上是没有对REGEX有说明,又想搞懂,才 211.72.242.199 10/24 14:31
12F:→ hoverwolf:上来问问:P 等等回完会好好再去看一下 211.72.242.199 10/24 14:32
13F:→ hoverwolf:另一位大大的网址XD 211.72.242.199 10/24 14:33
14F:推 hoverwolf:大大,再请问你一个问题 211.72.242.199 10/24 14:57
15F:→ hoverwolf:你说[-.]中括号内文字符号其一是因为 211.72.242.199 10/24 14:58
16F:→ hoverwolf:中括号吗 211.72.242.199 10/24 14:59
17F:→ MOONRAKER:是的 类似用法如[ABC] [A-Z]等等 59.115.199.159 10/24 15:05
18F:→ hoverwolf:那[-+.']里的' 是代表什麽意思@@? 211.72.242.199 10/24 15:08
19F:→ hoverwolf:哦哦!! 211.72.242.199 10/24 15:08
20F:→ MOONRAKER:我想应该没有特殊意思 我也不很清楚 59.115.203.98 10/24 21:34
21F:→ MOONRAKER:你可以实验看看,做内含'的字串来测试 59.115.203.98 10/24 21:34