前者学HTTP之U凯雷德L

匹配腾讯QQ号:[1-9][0-9] {4,} 
评注:腾讯QQ号从10000开始

前方的话

  一般地,U索罗德L和U汉兰达I相比麻烦区分。接下来,本文以界别UOdysseyL和ULANDI为引子,详细介绍U大切诺基L的用法

┌─────────────────────────────────────────────────────────────────────────────┐
│                                    href                                     │
├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤
│ protocol ││   auth    │      host       │           path            │ hash  │
│          ││           ├──────────┬──────┼──────────┬────────────────┤       │
│          ││           │ hostname │ port │ pathname │     search     │       │
│          ││           │          │      │          ├─┬──────────────┤       │
│          ││           │          │      │          │ │    query     │       │
"  http:   // user:pass @ host.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          ││           │          │      │          │ │              │       │
└──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘

 

转自:http://hi.baidu.com/greengnn/blog/item/9773b2ef58fa961afcfa3cc7.html

URL语法

  U帕杰罗L语法建立在由下边9局地结缘的通用格式上。个中,UCR-VL最关键的2个部分是方案(scheme)、主机(host)和路线(path)

<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>

【方案】

  方案实际上是规定怎么访问钦赐财富的首要标识符,它会告知负责解析U路虎极光L的应用程序应该运用什么协议

  方案组件必须以一个字母符号开端,由第3个“:”符号将其与UGL450L的其他部分分隔绝来。方案名是深浅写非亲非故的,因而U福睿斯L“http://www.hardware.com”和“HTTP://www.hardware.com”
是等价的

  常见的方案如下

1、HTTP

  HTTP是一种超文本传输协议方案,除了没有用户名和密码之外,与通用的UXC60L格式相符。借使简单了端口,就默许为80

  基本格式:

http://<host>:<port>/<path>?<query>#<frag>

  示例:

http://www.hardware.com/index.html
http://www.hardware.com:80/index.html

2、https

  方案https与方案http是一对。唯一的区分在于方案https使用了网景的SSL,
SSL为HTTP连接提供了端到端的加密机制。其语法与HTTP的语法相同,暗中认可端口为443

  基本格式:

https://<host>:<port>/<path>?<query>#<frag>

  示例:

https://www.hardware.com/secure.html

3、Mailto 

  Mailto
U帕杰罗L指向的是E-mail地址。由于E-mail的一举一动与任何方案都有所不一致(它并不指向任何能够一向访问的对象),所以mailto
U奥迪Q7L的格式与标准U奇骏L的格式也迥然不相同

  示例:

mailto:joe@hardware.com

4、ftp

  文件传输协议UGL450L能够用来从FTP服务器上下载或向其上传文件,并赢得FTP服务器上的目录结构内容的列表

  在Web和URAV4L出现此前,FTP就早已存在了。Web应用程序将FTP作为一种多少访问方案使用

  基本格式:

ftp://<user>:<password>@<host>:<port>/<path>;<params>

  示例:

ftp://anonymous:joe%40hardware.com@prep.ai.mit.edu:21/pub/gnu/

5、rtsp,rtspu

  中华VTSP U翼虎L是能够通超过实际时代时尚传输协议(Real Time Streaming
Protocol)解析的音/录像媒体财富的标识符

  方案rtspu中的u表示它是采用UDP共同商议来获取能源的

  基本格式:

rtsp://<user>:<password>@<host>:<port>/<path>
rtspu://<user>:<password>@<host>:<port>/<path>

  示例:

rtsp://www.hardware.com:554/interview/cto_video

6、file

  方案file表示一台钦点主机(通过地面磁盘、互联网文件系统或别的部分文件共享系统)上可径直访问的文书。各字段都遵循通用格式。假若简单了主机名,就私下认可为正在使用U卡宴L的本地主机

  基本格式:

file ://<host>/<path>

  示例:

file://OFFICE-FS/policies/casual-fridays.doc

7、telnet

  方案telnet用于访问交互式业务。它表示的不是目的自作者,而是可经过telnet协议访问的交互式应用程序(财富)

  基本格式:

telnet://<user>:<password>@<host>:<port>/

  示例:

telnet://slurp:webhound@joes-hardware.com:23/

  [注意]除了这几个之外以上常见的7种方案之外,假若要翻看全数的ULacrosseI方案列表,请挪动至此

【主机和端口】

  要想在因特网上找到能源,应用程序要明白是哪台机器装载了财富,以及在那台机械的什么样地点能够找到能对目的财富实行访问的服务器。U福睿斯L的主机和端口组件提供了这两组消息

  主机组件标识了因特网上可见访问能源的宿主机器。能够用上述主机名(www.hardware.com)也许IP地址来代表主机名

  [注意]IP地址能够是192.168.1.1那类IPv4地址名,还是可以是[0:0:0:0:0:0:0:1]那样用括号括起来的IPv6地址名

  比如,上面八个UXC90L就针对同一个财富——第3个U宝马X3L通过主机名,第①个经过IP地址指向服务器:

http://www.hardware.com:80/index.html 
http://161.58.228.45:80/index.html

  端口组件标识了服务器正在监听的网络端口。对下层使用了TCP协议的HTTP来说,默许端口号为80

【用户名和密码】

  很多服务器都必要输入用户名和密码才会允许用户访问数据。FTP服务器正是如此三个大规模的实例

ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu 
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt

  第一个例子没有用户或密码组件,只有专业的方案、主机和途径。假设某应用程序使用的UPAJEROL方案供给输入用户名和密码,比如FTP,但用户没有提供,它一般会插入一个暗许的用户名和密码。比如,要是向浏览器提供2个FTP
U索罗德L,但不曾点名用户名和密码,它就会插入anonymous(匿名用户)作为你的用户名,并发送3个暗许的密码(IE会发送IEUser)

  第3个例子展现了1个点名为anonymous的用户名。那一个用户名与主机组件组合在联合署名,看起来就像是E-mail地址一样。字符将用户和密码组件与UOdysseyL的其他部分分隔离来

  在第多少个例子中,内定了用户名(anonymous)和密码(my_passwd),两者之间由字符“:”分隔

【路径】

  U凯雷德L的路径组件表达了能源放在服务器的怎么地点。路径常常很像贰个分其他文件系统路径

http://www.hardware.com:80/seasonal/index-fall.html 

  那几个URubiconL中的路径为/seasonal/index-fall.html,很像UNIX文件系统中的文件系统路径。路径是服务器一定财富时所需的新闻。能够用字符“/”将HTTP
U奥迪Q5L的门路组件划分成一些路径段(path
segment),每一个路径段都有投机的参数(param)组件

【参数】

  对许多方案以来,唯有简单的主机名和到达目的的门路是不够的。除了服务器正在监听的端口,以及是还是不是能够通过用户名和密码访问资源外,很多说道都还索要愈来愈多的新闻才能源办公室事

  负责解析U帕杰罗L的应用程序须要这么些协议参数来拜访财富。不然,另一端的服务器只怕就不会为呼吁提供劳动,也许更不好的是,提供错误的劳务。比如,像FTP那样的商业事务,有二种传输情势:二进制和文件形式。肯定不期望以文件格局来传送二进制图片,那样的话,二进制图片大概会变得一团糟

  为了向应用程序提供它们所需的输入参数,以便科学地与服务器举办交互,UENVISIONL中有三个参数组件。那个组件就是U奥迪Q5L中的名值对列表,由字符“;”将其与UXC90L的其余部分(以及各名值对)分隔断来。它们为应用程序提供了访问能源所需的保有附加音讯。比如:

ftp://prep.ai.mit.edu/pub/gnu;type=d

  在那个事例中,有一个参数type=d,参数名为type,值为d

  如前所述,HTTP
UEvoqueL的门道组件能够分为若干路径段。每段都能够有友好的参数。比如:

http://www.hardware.com/hammers;sale=false/index.html;graphics=true

  这几个例子就有八个路径段,hammers和index.html。hammers路径段有参数sale,其值为false。index.html段有参数graphics,其值为true

【查询字符串】

  很多能源,比如数据库服务,都以能够透过提难题或开始展览査询来压缩所请求能源类型范围的。尽管数据库中保险着二个未售货物的清单,并得以对淸单举办査询,以判断产品是还是不是有货,那就足以用下列UCR-VL来査询Web数据库网关,看看号码为1273① 、颜色为blue、尺寸为large的条款是或不是有货:

http://www.hardware.com/inventory-check.cgi?item=12731&color=blue&size=large

  那个ULX570L的多数都与大家见过的此外U揽胜极光L类似。只有问号(?)左边的始末是新面世的。这一部分被称作查询(query)组件。U普拉多L的査询组件和标识网关能源的USportageL路径组件一起被发送给网关财富

  除了有个别违法则的字符须求越发处理之外,对査询组件的格式没什么须求。遵照常规,很多网关都期待査询字符串以一层层“名/值”对的款式出现,名值对中间用字符“&”分隔

【片段】

  有个别财富类型,比如HTML,除了能源级之外,还足以做越来越的剪切。比如,对八个带有章节的巨型文本文档来说,财富的U牧马人L会指向任何文本文书档案,但优质的事态是,能够钦命能源中的那个章节

  为了引用部分财富或财富的一个有的,U安德拉L扶助使用一些(frag)组件来代表2个能源内部的有的。比如,UHavalL可以针对HTML文档中贰个一定的图纸或小节

  片段挂在U中华VL的动手边,最前头有一个字符“#”。比如:

http://www.hardware.com/tools.html#drills

  在那一个例子中,片段drills引用了Web服务器上页面/tools.html中的2个局地。这一部分的名字称为drills

  HTTP服务器平时只处理整个对象,而不是指标的部分,客户端不能够将有些传送给服务器。浏览器从服务器获得了全部财富之后,会根据部分来显示感兴趣的那有个别财富

 

匹配网址U君越L的正则表明式:[a-zA-z]+://[^\s]* 
评注:网上流传的版本效果很单薄,上边这几个大旨得以满意供给

与URI区别

  UPRADOI是Uniform Resource
Identifier的缩写,称为统一财富标识符。U卡宴I是贰个通用的概念,由五个重庆大学的子集U奥迪Q3L和U本田UR-VN构成,UEscortL是通过讲述能源的地方来标识财富的,而ULANDN则是透过名字来分辨能源的,与它们当前所处地点非亲非故

  UXC90L是Uniform Resource
Locator的缩写,称为统一能源定位符。UENVISIONL就是利用web浏览器等做客web页面时须求输入的网页地址

  UGL450L是一种强大的工具。但UCRUISERL并不完美。它代表的是实际上的地点,而不是精确的名字。那种方案的通病在于一旦财富被移走了,UEscortL也就不再有效了。这时,它就不可能对目的实行稳定了 

  假如有了指标的标准名称,则不管其坐落何处都得以找到这些目的。就好像人一如既往,只要给定了能源的称谓和别的部分动静,无论财富移到哪个地方,都能够追踪到它。为了酬答那么些标题,因特网工程任务组(Internet
Engineering Task Force, IETF)
已经对U路虎极光N的新专业做了一段时间的研商了。无论对象搬移到什么地方,U奇骏N都能为对象提供多个平稳的称谓

  然则,从U普拉多L转换到UCR-VN是一项巨大的工程,帮忙U帕杰罗N要求实行过多改成——标准主体的一致性,对各个HTTP应用程序的改动等。所以,还要静观其变更合适的机会才能拓展这种转移

 

相当特定字符串: 
^[A-Za-z]+$ //匹配由2多少个英文字母组成的字符串 
^[A-Z]+$ //匹配由2五个英文字母的大写组成的字符串 
^[a-z]+$ //匹配由2四个英文字母的小写组成的字符串 
^[A-Za-z0-9]+$ //匹配由数字和2两个英文字母组成的字符串 
^\w+$ // 匹配由数字、2多少个英文字母可能下划线组成的字符串 
评注:最基本也是最常用的片段表明式

字符

  UPAJEROL的设计者们认识到有时人们可能会期待U逍客L中带有除通用的平安字母表之外的二进制数据或字符。因而,须要有一种转义机制,能够将不安全的字符编码为安全字符,再进行传输

  人们设计了一种编码机制,用来在U奥迪Q5L中代表种种不安全的字符。那种编码机制就算经过一种“转义”表示法来表示不安全字符的,那种转义表示法包括三个百分号(%),前边随着四个代表字符ASCII码的十六进制数

  上面是一些例证

图片 1

  在UOdysseyL中,有多少个字符被保存起来,有着独特的意思。有些字符不在定义的US-
ASCII可打字与印刷字符集中。还有个别字符会与有个别因特网网关和情商发生模糊,由此不赞成使用

  上面列出了保留及受限的字符

图片 2

 

非常身份证:\d{15}|\d{18} 
评注:中华人民共和国的身份证为18位或十九个人

编码方法

【encodeURI()】

  encodeU大切诺基I()函数把字符串作为U帕杰罗I实行编码,实际上enchodeU科雷傲I()函数只把参数中的空格编码为%20,其他特殊字符均不会转换

  encodeU昂科拉I()的不编码字符有八十一个:

! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z

//'http://www.w3school.com.cn<br />'
console.log(encodeURI("http://www.w3school.com.cn")+ "<br />")

//'http://www.w3school.com.cn/My%20first/'
console.log(encodeURI("http://www.w3school.com.cn/My first/"))

//',/?:@&=+$#'
console.log(encodeURI(",/?:@&=+$#"))

  [注意]encodeUHighlanderI()能够编码汉语

//'%E6%B5%8B%E8%AF%95'
console.log(encodeURI('测试'));

【decodeURI()】

  decodeUOdysseyI()函数可对encodeURubiconI()函数编码过的U普拉多I进行解码。实际上,decodeUQX56I()仅仅会把%20转移为空格呈现

//"http://www.w3school.com.cn/My first/"
console.log(decodeURI("http://www.w3school.com.cn/My%20first/"));

【encodeURIComponent()】

  encodeU本田UR-VIComponent()函数可把字符串作为U奥迪Q5I组件举办编码。该方式主要对;/?:@&=+$,#等这个用于分隔UOdysseyI组件的字符以及国语举行编码

  encodeU安德拉IComponent不编码字符有柒拾2个:

!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

  由于此方法对:/都实行了编码,所以无法用它来对网址举办编码,而符合对UEscortI中的参数举行编码

  [注意]encodeU本田CR-VIComponent()能够编码中文

var uri = "http://www.wrox.com/illegal value.htm#start";

//'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start'
console.log(encodeURIComponent(uri));

//'%E6%B5%8B%E8%AF%95'
console.log(encodeURIComponent('测试'));

【decodeURIComponent()】

  decodeU奔驰M级IComponent()函数可对encodeULX570IComponent()函数编码的UTiguanI举办解码

var uri = 'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start';
//'http://www.wrox.com/illegal value.htm#start'
console.log(decodeURIComponent(uri));

【escape()】

  escape()函数对字符串进行编码,将字符的unicode编码转化为16进制连串

  ES3中反对escape()的选拔,并建议用encodeUHavalI和encodeULANDIComponent代替,然而escape()依然被大规模的用来cookie的编码,因为escape()恰好编码了cookie中的不合法字符并且对路线中常出现的“/”不开始展览编码

  escape()的不编码字符有67个:

* + - . / @ _ 0-9 a-z A-Z

  [注意]escape()能够编码汉语

var uri = "http://www.wrox.com/illegal value.htm#start";

//'http%3A//www.wrox.com/illegal%20value.htm%23start'
console.log(escape(uri));

//%u6D4B%u8BD5
console.log(escape('测试'));

【unescape()】

  unescape()函数用于对escape()函数编码的URubiconI实行解码

//http://www.wrox.com/illegal value.htm#start
console.log(unescape('http%3A//www.wrox.com/illegal%20value.htm%23start'));

//'测试'
console.log(unescape('%u6D4B%u8BD5'));

匹配HTML标记的正则表明式:<(\S*?)
[^>]*>.*?</\1>|<.*? /> 
评注:网上流传的本子太不好,下边那么些也唯有能匹配部分,对于复杂的嵌套标记照旧不能

万分特定数字: 
^[1-9]\d*$ //匹配正整数 
^-[1-9]\d*$ //匹配负整数 
^-?[1-9]\d*$ //匹配整数 
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0) 
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0) 
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数 
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数 
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
//匹配浮点数 
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
//匹配非负浮点数(正浮点数 + 0) 
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
//匹配非正浮点数(负浮点数 + 0) 
评注:处理大批量数码时有用,具体使用时注意核查

匹配ip地址:\d+\.\d+ \.\d+\.\d+ 
评注:提取ip地址时有用

合营国内电话号码:\d{3}-\d{8}|\d{4}- \d{7} 
评注:匹配方式如 0511-4405222 或 021-87888822

匹配首尾空白字符的正则表明式:^\s*|\s*$ 
评注:能够用来删除行首行尾的空白字符(包蕴空格、制表符、换页符等等),非凡实用的表达式

匹配双字节字符(包括汉字在内):[^\x00-\xff] 
评注:可以用来计量字符串的尺寸(三个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表明式:\n\s*\r 
评注:能够用来删除空白行

合营中华夏族民共和国邮政编码:[1-9]\d{5}(?!\d) 
评注:中华夏族民共和国邮编为7位数字

匹配普通话字符的正则表明式: [\u4e00-\u9fa5] 
评注:匹配国语还真是个脑瓜疼的事,有了那么些表明式就好办了

相当 Email地址的正则表达式:\w+([-+.]
\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 
评注:表单验证时很实用

同盟帐号是不是合法(字母起始,允许5-16字节,允许字母数字下划线):^[a-zA-Z]
[a-zA-Z0-9_]{4,15}$ 
评注:表单验证时很实用