江湖告急喇 發表於 2022-1-9 11:55:53

正则表达式详析+常用示例

<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">五、反义代码&nbsp;</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>五、反义代码&nbsp;</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> 区别&para;</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>非贪婪操作符是问号:&#39;符号?&#39;</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>匹配&quot;正则表达式reg&quot;前边的位置 (?=reg)</li><li>匹配&quot;正则表达式reg&quot;后边的位置 (?&lt;=reg)</li><li>匹配后边跟的不是&quot;正则表达式reg&quot;的位置 (?!reg)</li><li>匹配前边不是&quot;正则表达式reg&quot;的位置 (?&lt;!reg)</li></ul>
<p class="maodian"><a name="_label9"></a></p><h2>十、常用的实用正则表达式</h2>
<ul><li style="margin-left: 40px;">  输入零和非零开头的数字:&quot;^(0|*)$&quot;。</li><li style="margin-left: 40px;">  输入有两位小数的正实数:&quot;^+(.{2})?$&quot;。</li><li style="margin-left: 40px;">  输入有1~3位小数的正实数:&quot;^+(.{1,3})?$&quot;。</li><li style="margin-left: 40px;">  输入非零的正整数:&quot;^&quot;+?*$&quot;。</li><li style="margin-left: 40px;">  输入非零的负整数:&quot;^&quot;-[]0-9&quot;*$。</li><li style="margin-left: 40px;">  输入长度为3的字符:&quot;^.{3}$&quot;。</li><li style="margin-left: 40px;">  输入由26个英文字母组成的字符串:&quot;^+$&quot;。</li><li style="margin-left: 40px;">  输入由26个大写英文字母组成的字符串:&quot;^+$&quot;。</li><li style="margin-left: 40px;">  输入由26个小写英文字母组成的字符串:&quot;^+$&quot;。</li><li style="margin-left: 40px;">  输入由数字和26个英文字母组成的字符串:&quot;^+$&quot;。</li><li style="margin-left: 40px;">  输入由数字、26个英文字母或者下划线组成的字符串:&quot;^&quot;w+$&quot;。</li><li style="margin-left: 40px;">  验证用户密码:&quot;^&quot;w{5,17}$&quot;正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。</li><li style="margin-left: 40px;">  验证是否含有^%&amp;&rsquo;,;=?$&quot;&quot;等字符:&quot;[^%&amp;&rsquo;,;=?$&quot;x22]+&quot;。</li><li style="margin-left: 40px;">  只能输入汉字:&quot;^[&quot;u4e00-&quot;u9fa5]{0,}$&quot;</li><li style="margin-left: 40px;">  验证Email地址:&quot;^&quot;w+([-+.]&quot;w+)*@&quot;w+([-.]&quot;w+)*&quot;.&quot;w+([-.]&quot;w+)*$&quot;。</li><li style="margin-left: 40px;">  验证InternetURL:&quot;^http://([&quot;w-]+&quot;.)+[&quot;w-]+(/[&quot;w-./?%&amp;=]*)?$&quot;。</li><li style="margin-left: 40px;">  验证电话号码:&quot;^(&quot;(&quot;d{3,4}-)|&quot;d{3.4}-)?&quot;d{7,8}$&quot;正确格式为:&quot;XXX-XXXXXXX&quot;、&quot;XXXX- XXXXXXXX&quot;、&quot;XXX-XXXXXXX&quot;、&quot;XXX-XXXXXXXX&quot;、&quot;XXXXXXX&quot;和&quot;XXXXXXXX&quot;。</li><li style="margin-left: 40px;">  验证身份证号(15位或18位数字):&quot;^&quot;d{15}|&quot;d{18}$&quot;。</li><li style="margin-left: 40px;">  验证一年的12个月:&quot;^(0?|1)$&quot;正确格式为:&quot;01&quot;~&quot;09&quot;和&quot;1&quot;~&quot;12&quot;。</li><li style="margin-left: 40px;">  验证一个月的31天:&quot;^((0?)|((1|2))|30|31)$&quot;正确格式为;&quot;01&quot;~&quot;09&quot;和&quot;1&quot;~&quot;31&quot;。</li></ul>
頁: [1]
查看完整版本: 正则表达式详析+常用示例