💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[success] 关于正则的速记法 | 实际命令 | 快捷命令 | | :---: | :---: | | [0-9] | \d | | [a-z][0-9][_] | \w | | <span style="color:blue;">{0,}</span> 发生0次或多次 | * | | <span style="color:blue;">{1,} </span> 至少发生一次 | + | | <span style="color:blue;">{0,1} </span> 发生0次或1次 | ? | - ab<span style="color:blue;">\*</span>:表示一个字符串有一个a后面跟着<span style="color:blue;">零个或若干个</span>b。("a", "ab", "abbb",……); - ab<span style="color:blue;">+</span>:表示一个字符串有一个a后面跟着<span style="color:blue;">至少一个</span>b<span style="color:blue;">或者更多</span>; - ab<span style="color:blue;">?</span>:表示一个字符串有一个a后面跟着<span style="color:blue;">零个或者一个</span>b; - a<span style="color:blue;">?</span>b<span style="color:blue;">+$</span>:表示在字符串的<span style="color:blue;">末尾</span>有<span style="color:blue;">零个或一个</span>a跟着<span style="color:blue;">一个或几个</span>b。 # :-: 轻松学习正则表达式 也许你是初学者,那以防万一,我先来讲讲什么是正则表达式吧: &nbsp; 正则表达式可以帮助我们更好的描述<span style="color:red;">复杂的文本格式</span>。一旦你描述清楚了这些格式,那你就可以利用它们对文本数据进行<span style="color:red;">检索、替换、提取和修改操作</span>。 &nbsp; 下面有一个正则表达式的简单例子。第一步先要引入有关正则式的<span style="color:red;">命名空间</span>: ~~~ using System.Text.RegularExpressions; ~~~ 第二步就是用指定的正则式构建一个<span style="color:red;">正则表达式对象</span>,下面的正则式是用来搜索长度为10的a-z的英文字母: ~~~ Regex obj = new Regex(“[a-z]{10}”); ~~~ 最后,根据正则式<span style="color:red;">在指定数据中检索匹配项</span>,如果匹配IsMatch方法就会返回true。 ~~~ MessageBox.Show(obj.IsMatch(“shivkoirala”).ToString()); ~~~ &nbsp; 3个重要的正则式命令 记住正则语法最好的办法就是记住这三样东西:Bracket(括号), caret(插入符号)和Dollars(美元符号)。 ![](https://box.kancloud.cn/918a2d1c9050ed864d163fcfe4672ff4_426x235.png) - B - 在正则表达式中有3种类型的括号 - 方括号"\["内是需<span style="color:blue;">要匹配</span>的<span style="color:blue;">字符</span>, <span style="color: orange">#任意匹配哦!不带\[\]的是固定匹配!</span> - 花括号"{"内是指定匹配字符的<span style="color:blue;">数量</span>。 - 圆括号“(“ 则是用来<span style="color:blue;">分组</span>的。 - C - 插入符号 “^” 表示正则式的开始。 - D - 美元符号“$” 表示正则式的结束。 现在你知道上面的3个语法后,你就可以写世界上任何一条验证规则了。比如下面的例子就很好的说明了上面3条正则语法是如何协调运作的。 ![](https://box.kancloud.cn/4e54b853a62ec3e5df2a92184a03dade_400x257.png) - 上面的这条正则式只能匹配a-z的英文字母,同样是在中括号中标明匹配范围。 - 花括号中则是标明匹配字符串的最小长度和最大长度。 - 最后为了让表达式更规则,分别在开头和结尾加上了插入符号"^"和美元符号"$"。 好了,现在我们就用上面的3条语法来实现一些正则表达式的验证规则吧。 &nbsp; ### **检查用户是否输入了shivkoirala?** 让我们开始第一个验证,输入的字符在a-g之间? ~~~ [a-g] ~~~ 输入的字符在a-g之间并且长度为3? ~~~ [a-g]{3} ~~~ 输入的字符在a-g之间并且最大长度为3最小长度为1? ~~~ [a-g]{1,3} ~~~ &nbsp; ### **我如何在匹配像91230456, 01237648那样的固定8位数?** ~~~ ^[0-9]{8}$ ~~~ &nbsp; ### **如何验证最小长度为3最大长度为7的数字?** 如:123, 1274667, 87654? ~~~ ^[0-9]{3,7}$ ~~~ &nbsp; ### **如何验证像abc10206688那样的发票编号,前3个是字母剩余为8位长度的数字?** 前三个是字母: ~~~ ^[a-z]{3} #只能匹配小写 ~~~ 后面是8位长度的数字: ~~~ [0-9]{8} ~~~ 所以整个表达式为: ~~~ ^[a-z]{3}[0-9]{7}$ ~~~ &nbsp; ### **验证像INV190203 或 inv820830那样的前3位是<span style="color:blue;">不区分</span>大小写的英文字母,剩余8位是数字** 在<span style="color:blue;">前面的表达式</span>中只能匹配前3个<span style="color:blue;">是小写</span>英文字母的发票编号,如果我们输入大写字母那就不能匹配了。 所以为了确保前3个字母是<span style="color:blue;">不区分大小写的</span>,我们就要用表达式^\[a-zA-Z\]{3}。 完整的正则式如下: ~~~ ^[a-zA-Z]{3}[0-9]{7}$ ~~~ &nbsp; ### **我们可以验证简单的网址URL格式吗?** 第一步:检查是否存在www: ~~~ ^www. #此为固定匹配 ~~~ 第二步:域名必须是长度在1-15的英文字母: ~~~ . [a-z]{1,15} #此为任意匹配,记住他带[]了。如www.baidu 只要baidu是a-z之间的任意字符就能匹配 ~~~ 第三部:以.com或者.org结束: ~~~ . (com|org)$ ~~~ 完整的表达式如下: ~~~ ^www[.][a-z]{1,15}[.](com|org)$ ~~~ &nbsp; ### **让我们在来看看BCD(其实也就是上面说的3条基本语法)如何验证email格式** 第一步:email开始是长度在1-10的英文字母,最后跟一个"@": ~~~ ^[a-zA-Z0-9]{1,10}@ ~~~ 第二步:@后面是长度在1-10的英文字母,后面跟一个".": ~~~ [a-zA-Z]{1,10}. ~~~ 第三步:最后以.com或.org结束: ~~~ .(com|org)$ ~~~ 最后完整的表达式如下: ~~~ ^[a-zA-Z0-9]{1,10}@[a-zA-Z]{1,10}.(com|org)$ ~~~ &nbsp; ### **验证值在0-25的数字:** ~~~ ^(([0-9])|([0-1][0-9])|([0-2][0-5]))$ ~~~ &nbsp; ### **验证格式为MM/DD/YYYY, YYYY/MM/DD and DD/MM/YYYY的日期:** | 步骤 | 正则表达式 | 描述说明 | | --- | --- | --- | | 先来检查 DD. 首先DD的长度为1-29 ( 2月份) , 1-30 (月小) , 1-31 (月大) .所以 DD 就是 1-9 或 01-09| [1-9]\|0[1-9] | 允许用户输入1-9或者01-09 | | 再为DD添加匹配10-19 | [1-9]\|1[0-9] | 允许用户输入01-19 | | 再为DD添加匹配20-29 | [1-9]\|1[0-9]\|2[0-9] | 允许用户输入01-29 | | 再为DD添加匹配30-31 | [1-9]\|1[0-9]\|2[0-9]\|3[0-1]| 最后用户可以输入01-31 | | 再来匹配日期间的分隔符"/","-" | [/ . -\] | 允许用户输入日期分隔符 | | MM也是类似的操作 | [1-9]\|0[1-9]\|1[0-2] | 让用户输入月份值01-12 | | 最后就是YY的操作 | 1[9][0-9][0-9]\|2[0][0-9][0-9] | 允许用户输入年份1900-2099 | &nbsp; 最后DD/MM/YYYY(验证日/月/年)格式的日期的正则表达式为: ~~~ ^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .]([1-9]|0[1-9]|1[0-2])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$ ~~~ MM/DD/YYYY(验证月/日/年)格式的日期: ~~~ ^([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[- / .](1[9][0-9][0-9]|2[0][0-9][0-9])$ ~~~ YYYY/MM/DD(验证年/月/日)格式的日期: ~~~ ^(1[9][0-9][0-9]|2[0][0-9][0-9])[- / .]([1-9]|0[1-9]|1[0-2])[- / .]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])$ ~~~