当前所在位置: 首页 > 网站购买

Nginx核心指令listen与server_name入门也许这有你想知道Python正则校验的最全实现

2021-10-11 本站作者 【 字体:

也许这有你想知道Python正则校验的最全实现

正则表达式是一个特殊的字符序列,它能时我们方便的检查一个字符串是否与某种模式匹配。

Nginx核心指令listen与server_name入门

在nginx.conf配置文件中有常见且重要的指令,在Nginx中nginx.conf配置文件详解 中介绍了一部分,下面将对listen和server_name进行介绍。

1.listen

(1)含义

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

指定服务监听的地址,如果使用IP协议,则可以包括IP地址和端口;如果使用UNIX域套接字协议,则为文件路径。

re 模块使 Python 语言拥有全部的正则表达式功能。

本文主要使用re模块介绍如下数据类型的准确性校验。

电话号码 IP地址 MAC地址 端口号 经度 纬度 姓名 车辆牌照 QQ号码 邮箱地址居住地址 域名银行卡号 IMEI 手机号码&固话号码校验

手机正则表达式

r"^[1][3-9][0-9]{9}$"

86手机正则表达式

r"(^+86|86|[86]|(86)|+0086|0086|[0086]|(0086))(s[1]|[1])[345678][0-9]{9}$"

电话正则表达式

r"^[4,8,0][0-9]{2,3}(-[0-9]{7,8}$|(s)[0-9]{7,8}$|[0-9]{7,8}$)"

代码示例:

(2)作用域

pattern=0 校验电话号码(手机号码+固话号码);pattern=1 校验手机号码 ; pattern=2 校验固化号码;也许这有你想知道Python正则校验的最全实现

示例如下:

只能在server块中设置,并起作用。

也许这有你想知道Python正则校验的最全实现MAC地址校验

支持“-”、“:” 、“.”以及无间隔符 四种格式校验。

(3)设置方法

MAC正则表达式:

r"^([0-9A-Fa-f][0、2、4、6、8、A、C、E][-:.]{0,1})([0-9A-Fa-f]{2}[-:.]{0,1}){4}([0-9A-Fa-f]{2})$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现端口号校验

端口号正则表达式

对于IP协议来讲,可以只配置端口,可以只配置IP,也可以IP和端口都配置。

r"^([0-9]|[1-9]d{1,3}|[1-5]d{4}|6[0-5]{2}[0-3][0-5])$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现经度校验

经度正则表达式

server { # 监听127.0.0.1的9000端口 listen 127.0.0.1:9000; # 监听locahost的9000端口 listen localhost:9000; # 监听root权限用户127.0.0.1的80端口,非root权限用户不允许启动nginx listen 127.0.0.1; # 监听本机所有IP的9000端口 listen 9000; # 监听本机所有IP的9000端口 listen *:9000; # 监听IPv6的9000端口 listen [::]:9000; # 监听IPv6的回环IP的默认80端口(root权限) listen [::1]; }

在listen指令下可以指定default_server,表明其所在的server块为默认配置,客户端的请求要匹配优先级最低(具体见下)。如果不指定,为配置文件中第一个声明的server块为默认配置。

如果没有配置listen指定,对于root权限用户监听80端口,对于非root用户监听8000端口。

r"^[\-\+]?(0?\d{1,2}|0?\d{1,2}\.\d{1,15}|1[0-7]?\d{1}|1[0-7]?\d{1}\.\d{1,15}|180|180\.0{1,15})$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

2.server_name

(1)含义

定义虚拟主机的名称,并由此确定客户端的请求由哪个server块处理。其值可以是localhost(默认)、服务器IP、域名。

也许这有你想知道Python正则校验的最全实现纬度校验

纬度正则表达式

一般一个域名对应一个IP,而一个IP可以有多个域名。

r"^[\-\+]?(0?\d{1,2}|0?\d{1,2}\.\d{1,15}|1[0-7]?\d{1}|1[0-7]?\d{1}\.\d{1,15}|180|180\.0{1,15})$"

代码示例:

域名是分级别的:一级域名(顶级域名)、二级域名、三级域名等,以英文的句点(.)进行分隔;一级域名可以包括多个二级域名,一个二级域名可以包括多个三级域名,以此类推。域名是需要在特定的组织进行注册或备案。

也许这有你想知道Python正则校验的最全实现

示例如下:

(2)作用域

只能在server块中设置,并起作用。

也许这有你想知道Python正则校验的最全实现IP地址校验

IPV4正则表达式

r"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"

IPV6正则表达式

r"(?<![:.w])(?:[A-F0-9a-f]{1,4}:){7}[A-F0-9a-f]{1,4}(?![:.w])$"

代码示例:

(3)设置方式

当server_name的值设为域名时,有多种设置方法。当客户端发出请求后,nginx会根据如下顺序123456进行搜索匹配,配对成功则停止搜索,然后在合适location块中处理请求。

parrtern=0 IP(v4/v6)校验 ; parrtern=1 IPV4校验 ; parrtern=2 IPV6校验也许这有你想知道Python正则校验的最全实现

示例如下:

1)完整的域名

2)以通配符*开头的域名

3)以通配符*结尾的域名

也许这有你想知道Python正则校验的最全实现姓名校验

包含少数民族·格式的姓名校验

姓名正则表达式

4)正则表达式的域名

使用正则表达式时,server_name的值以~开头,域名中的点需要加\(反斜杠)进行转义。

u"(^[\u4e00-\u9fa5]{2:})|(^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$)"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现QQ号码校验

首位不为0的5~12位数字组合。

QQ号码正则表达式

u"^[1-9][0-9]{4,11}$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现邮件地址校验

邮箱正则表达式

u"^[A-Za-z1-9][w.-]+@(w+.)+[a-zA-Z]{2,3}$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

server { listen 80; server_name domain.com www.domain.com; } server { listen 80; server_name *.domain.com ; } server { listen 80; server_name domain.* ; } server { listen 80; server_name ~^(www\.)?(.+)$; }

正则表达式的点(.)表示除了换行符(\n)之外的任意单个字符,加号(+)表示匹配前面子表达式1次或N次,问号(?)表示匹配前面子表达式0次或1次,^表示以其后字符串开始,$表示以其前的字符串结尾。

也许这有你想知道Python正则校验的最全实现居住地址校验

地址正则表达式

5)其他特殊情况

u"^(?=.*?[\u4E00-\u9FA5])[0-9A-Za-z\u4E00-\u9FA5-s]+$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现域名校验

由多个标号组成的完整域名总共不超过255个字符。

当server_name被指定为为空字符串时,即server_name "";表示可以匹配没有带host的请求。

在HTTP/1.0协议中不支持请求中带HOST字段,在HTTP/1.1中要求请求中必须带host字段。

域名正则表达式

当server_name被指定为下划线时,即server_name _;表示可以匹配任意请求。

u"(?=^.{3,255}$)^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

6)默认配置

也许这有你想知道Python正则校验的最全实现车牌号码校验

车牌号码校验,支持校验武警车牌、军牌、民用车牌、使馆车牌、新能源车牌、农用车辆及拖拉机车牌号。

车牌正则表达式

在listen指令中指定default_server的值。

u"^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][a-zA-Z]|[\u4e00-\u9fa5]{2}d{2}[-]?|[\u4e00-\u9fa5]{2}[a-zA-Z])[-]?|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][0-9]{2}[-]?|([wW][Jj][京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][-]?)|([a-zA-Z]{2}))([A-Za-z0-9]{5}|[A-Za-z0-9]{4}[A-Z0-9挂警港澳领学]|[DdFf][A-HJ-NP-Za-hj-np-z0-9][0-9]{4}|[0-9]{5}[DdFf])$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现IMEI校验(非正则)也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现银行卡号校验

银联规范里面明确,银行卡位数为13~19位。

银行卡正则表达式

u"(?=^d{13,19}$)^([1-9])([0-9]{12,18})$"

代码示例:

也许这有你想知道Python正则校验的最全实现

示例如下:

也许这有你想知道Python正则校验的最全实现

阅读全文
id_1广告位-300*300
相关推荐

注册一个域名的流程是什么?网站域名注册的流程是什么?

注册一个域名的流程是什么?网站域名注册的流程是什么?
总共有三个步骤(本站所有的域名注册步骤是一样的,这里以英文域名为例)。 一...

哈尔滨1地升级为高风险地区、5地升级为中风险地区五一从重庆去广州回来需要隔离吗?

哈尔滨1地升级为高风险地区、5地升级为中风险地区五一从重庆去广州回来需要隔离吗?
关于将利民开发区裕田街道等地区风险等级调整为中高风险地区的通告根据国务院联防联控...

绥芬河、满洲里、哈尔滨全为低风险区,明起全国已无中风险区域疫情当前我的担当是什么?

绥芬河、满洲里、哈尔滨全为低风险区,明起全国已无中风险区域疫情当前我的担当是什么?
不畏关山千里路,冰心一片付征鞍。据央视***客户端,黑龙江省应对新型冠状病毒感染...

黑龙江哈尔滨8地区升为中风险广东到呼伦贝尔用隔离吗?

黑龙江哈尔滨8地区升为中风险广东到呼伦贝尔用隔离吗?
内蒙古自治区新冠肺炎疫情防控指挥部关于进一步加强管控严防新冠肺炎疫情输入传播扩散...

什么是网关、DNS、子网掩码、MAC地址DNS服务器:小黑屋中的“翻译官”大神

什么是网关、DNS、子网掩码、MAC地址DNS服务器:小黑屋中的“翻译官”大神
什么是网关 DNS服务器是一个外行听起来比较专业的词汇,大部分只是听说过DNS,...

中英域名后面的英文分别代表什么意思?如何把域名翻译为IP地址?

中英域名后面的英文分别代表什么意思?如何把域名翻译为IP地址?
在DOS窗口中 PING 名以一个常见的域名为例说明,baidu网址是由...

上海现在属于什么风险地区?本土确诊+16,哈尔滨两地升中风险

上海现在属于什么风险地区?本土确诊+16,哈尔滨两地升中风险
9月21日0时至24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊...

风险等级几级才算是重大危险源本土确诊+3!哈尔滨公告:非必要不离哈,两地调整为中风险,国家卫健委派工作组赴哈丨一财早知道

风险等级几级才算是重大危险源本土确诊+3!哈尔滨公告:非必要不离哈,两地调整为中风险,国家卫健委派工作组赴哈丨一财早知道
上班路上10分钟,时事财富样样通【隔夜关注】据哈尔滨市政府***办召开的疫情防控...

中国疫情重灾区是哪里?昨日本土新增28例,哈尔滨多地调为中风险

中国疫情重灾区是哪里?昨日本土新增28例,哈尔滨多地调为中风险
没有重灾区了。9月22日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团...

阿里云买可以一个域名,我做解析,需要什么设备?域名出售平台哪家好?

阿里云买可以一个域名,我做解析,需要什么设备?域名出售平台哪家好?
前提:网站做好想上线,需要域名和空间(服务器)备案通过。解析:一般只需要拿到服务...