正则表达式详析+常用示例
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、正则的含义</a></li><li><a href="#_label1">二、正则表达式的应用场景</a></li><li><a href="#_label2">三、常用的格式校验</a></li><li><a href="#_label3">四、元字符</a></li><li><a href="#_label4">五、反义代码 </a></li><li><a href="#_label5">六、限定符</a></li><li><a href="#_label6">七、分组匹配</a></li><li><a href="#_label7">八、贪婪与非贪婪</a></li><li><a href="#_label8">九、零宽断言</a></li><li><a href="#_label9">十、常用的实用正则表达式</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>一、正则的含义</h2><p>正则表达式就是用来操作字符串的一种逻辑公式</p>
<p class="maodian"><a name="_label1"></a></p><h2>二、正则表达式的应用场景</h2>
<ul style="margin-left:40px"><li>数据分析时数据获取的文本筛选</li><li>进行爬虫时,网页数据的匹配</li><li>写前端代码的时候,用户输入数据的验证</li><li>测试人员对请求结果的数据验证</li><li>批量文本编辑,比如<code>Sublime Text</code>或<code>nodepad++</code>、<code>EditPlus</code>等记事本软件全都支持正则表达式的使用</li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>三、常用的格式校验</h2>
<ul><li style="margin-left: 40px;">邮箱验证</li><li style="margin-left: 40px;">IP地址验证</li><li style="margin-left: 40px;">电话号码验证</li><li style="margin-left: 40px;">身份证号码验证</li><li style="margin-left: 40px;">密码强度验证</li><li style="margin-left: 40px;">网址验证</li><li style="margin-left: 40px;">汉字验证 <code>[\u4e00-\u9fa5]</code></li><li style="margin-left: 40px;">......</li><li style="margin-left: 40px;">凡是有一定规律的,批量的数据获取,都可以使用正则表达式来完成</li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>四、元字符</h2>
<table><tbody><tr><th>字符</th><th>说明</th></tr><tr><td>.</td><td>代表的是换行符以外的任意字符。 换行符是:(不同的操作系统有不同的换行符) \n \r\n</td></tr><tr><td>\w</td><td>匹配字母、数字、下划线、汉字的一个字符</td></tr><tr><td>\s</td><td>匹配任意的空白符</td></tr><tr><td>\d</td><td>匹配数字</td></tr><tr><td>^</td><td>匹配字符串的开始</td></tr><tr><td>$</td><td>匹配字符串的结束</td></tr></tbody></table>
<p class="maodian"><a name="_label4"></a></p><h2>五、反义代码 </h2>
<p>反义代码的意思就是与元字符表示相反的代码</p>
<ul><li>\W 匹配的任意 不是 字母、数字、下划线、汉字 的字符</li><li>\S 匹配任意 不是 空白符的字符</li><li>\D 匹配任意 不是 数字的字符</li></ul>
<p class="maodian"><a name="_label5"></a></p><h2>六、限定符</h2>
<table><tbody><tr><td>符号</td><td>说明</td></tr><tr><td>*</td><td>代表的重复0次或者是多次</td></tr><tr><td>+</td><td>代表的重复1次或者是多次</td></tr><tr><td>?</td><td>代表的是重复0次或者是1次</td></tr><tr><td>{n}</td><td>重复n次,举例:{3}指的就是重复3次</td></tr><tr><td>{n,}</td><td>重复n次或者更多次数</td></tr><tr><td>{n,m}</td><td>重复n次到m次,所以这里m一般要比n</td></tr></tbody></table>
<p class="maodian"><a name="_label6"></a></p><h2>七、分组匹配</h2>
<ul><li><code>findall / search/match</code> 区别¶</li><li><code>findall </code>是查找所有的</li><li><code>search</code> 匹配第一个</li><li><code>match</code> 匹配开头的</li></ul>
<p class="maodian"><a name="_label7"></a></p><h2>八、贪婪与非贪婪</h2>
<ul><li>贪婪的意思是尽可能多的匹配</li><li>非贪婪的意思就是尽可能少的匹配</li><li>非贪婪操作符是问号:'符号?'</li><li>?号代表的是重复0次或者是1次,再加一个问号,代表的是非贪婪操作,那么最后就只匹配0次</li></ul>
<p><strong>分支条件匹配:</strong></p>
<p>使用 | 来分隔开不同的正则表达式,代表着 条件1 或 条件2 或条件3 ......</p>
<p class="maodian"><a name="_label8"></a></p><h2>九、零宽断言</h2>
<ul><li>匹配"正则表达式reg"前边的位置 (?=reg)</li><li>匹配"正则表达式reg"后边的位置 (?<=reg)</li><li>匹配后边跟的不是"正则表达式reg"的位置 (?!reg)</li><li>匹配前边不是"正则表达式reg"的位置 (?<!reg)</li></ul>
<p class="maodian"><a name="_label9"></a></p><h2>十、常用的实用正则表达式</h2>
<ul><li style="margin-left: 40px;"> 输入零和非零开头的数字:"^(0|*)$"。</li><li style="margin-left: 40px;"> 输入有两位小数的正实数:"^+(.{2})?$"。</li><li style="margin-left: 40px;"> 输入有1~3位小数的正实数:"^+(.{1,3})?$"。</li><li style="margin-left: 40px;"> 输入非零的正整数:"^"+?*$"。</li><li style="margin-left: 40px;"> 输入非零的负整数:"^"-[]0-9"*$。</li><li style="margin-left: 40px;"> 输入长度为3的字符:"^.{3}$"。</li><li style="margin-left: 40px;"> 输入由26个英文字母组成的字符串:"^+$"。</li><li style="margin-left: 40px;"> 输入由26个大写英文字母组成的字符串:"^+$"。</li><li style="margin-left: 40px;"> 输入由26个小写英文字母组成的字符串:"^+$"。</li><li style="margin-left: 40px;"> 输入由数字和26个英文字母组成的字符串:"^+$"。</li><li style="margin-left: 40px;"> 输入由数字、26个英文字母或者下划线组成的字符串:"^"w+$"。</li><li style="margin-left: 40px;"> 验证用户密码:"^"w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。</li><li style="margin-left: 40px;"> 验证是否含有^%&’,;=?$""等字符:"[^%&’,;=?$"x22]+"。</li><li style="margin-left: 40px;"> 只能输入汉字:"^["u4e00-"u9fa5]{0,}$"</li><li style="margin-left: 40px;"> 验证Email地址:"^"w+([-+.]"w+)*@"w+([-.]"w+)*"."w+([-.]"w+)*$"。</li><li style="margin-left: 40px;"> 验证InternetURL:"^http://(["w-]+".)+["w-]+(/["w-./?%&=]*)?$"。</li><li style="margin-left: 40px;"> 验证电话号码:"^("("d{3,4}-)|"d{3.4}-)?"d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。</li><li style="margin-left: 40px;"> 验证身份证号(15位或18位数字):"^"d{15}|"d{18}$"。</li><li style="margin-left: 40px;"> 验证一年的12个月:"^(0?|1)$"正确格式为:"01"~"09"和"1"~"12"。</li><li style="margin-left: 40px;"> 验证一个月的31天:"^((0?)|((1|2))|30|31)$"正确格式为;"01"~"09"和"1"~"31"。</li></ul>
頁:
[1]