前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Regex]Get正则表达式

[Regex]Get正则表达式

作者头像
祥知道
发布2020-03-10 15:58:20
4820
发布2020-03-10 15:58:20
举报
文章被收录于专栏:祥的专栏

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/51175937


文章目录

代码语言:txt
复制
- @[toc]基本概念具体实例"*,+,?"的用法"{}"的用法"|"的用法"."的用法"[]"的用法快捷命令示例C#测试程序

Beg:

2018.12.5 补充:

[Linux]正则表达式和grep使用:https://blog.csdn.net/humanking7/article/details/84845641

End


一直觉得正则表达式是很Geek的东西,一直浸淫在Windows的环境下,让我很难接触到这个伟大的发明,最近用C#做的项目里面要处理字符串,发现C#支持正则表达式,故而熟悉了一下,发现真是相见恨晚,处理效果真是太棒了,感觉这个技能一定要Get,故而催生出这篇博文。

基本概念

记住正则语法最好的办法就是记住这三样东西:Bracket(括号), caret(插入符号)和Dollars(美元符号)。

B

C

D

在正则表达式中有3种类型的括号方括号 [ 和花括号 { 。方括号 [ 内是需要匹配的字符,花括号 { 内是指定匹配字符的数量。圆括号 ( 则是用来分组的。

插入符号 ^ 表示正则式的开始。

美元符号 $ 表示正则式的结束。

现在你知道上面的3个语法后,你就可以写世界上任何一条验证规则了。比如下面的例子就很好的说明了上面3条正则语法是如何协调运作的。

具体实例

Regex代码

说明

匹配字符串

^my

表示所有以 my 开头的字符串

my pen,myDestine等

to win$

表示所有以 to win 结尾的字符串

I want to win 等

^abc$

表示开头结尾都是 abc 的字符串

只有 abc 这一种情况

me

表示任何包含 me 的字符串

meme,It's me,等

"*,+,?"的用法

***** , +? 这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示:

  • ***** 表示,字符出现次数,没有 或 更多
  • + 表示,字符出现次数,一次 或 更多
  • ? 表示,字符出现次数,没有 或 一次

下面是几个例子:

Regex代码

说明

匹配字符串

ab*

表示一个字符串有一个a后面跟着0个或若干个b

a,ab,abb 等

ab+

表示一个字符串有一个a后面跟着至少一个b或者更多

ab,abb 等

ab?

表示一个字符串有一个a后面跟着0个或者一个b

a,aaa,ababs 等 |

a?b+$

表示在字符串的末尾有0个或一个a跟着一个或几个b

ab,b,abb 等

"{}"的用法

也可以使用范围,用大括号括起,用以表示重复次数的范围

Regex代码

说明

匹配字符串

ab{2}

表示一个字符串有一个a跟着2个b

abb,sabbbbbb,sabbsegf 等

ab{2,}

表示一个字符串有一个a后面跟着至少2个b或者更多

abb,abbbbb 等

ab{3,5}

表示一个字符串有一个a跟着3到5个b

请注意,你必须指定范围的下限(如:{0,2}而不是{,2})。

还有,你可能注意到了,*+? 相当于**{0,}{1,}** 和 {0,1}

"|"的用法

还有一个 | ,表示 或操作

Regex代码

说明

匹配字符串

hi|hello

表示一个字符串里有 hi 或者 hello

(b|cd)ef

表示一个字符串里有 bef 或 cdef

*(a|b)c

表示一串a 或 b混合的字符串后面跟一个c

c,ac,bc,aaac 等

"."的用法

. 可以替代任何字符。

Regex代码

说明

匹配字符串

a.0-9

表示一个字符串有一个 a 后面跟着一个任意字符和一个数字

ax9,a*0 等

^.{3}$

表示有任意三个字符的字符串(长度为3个字符)

123,abc 等

"[]"的用法

方括号 [] 表示某些字符允许在一个字符串中的某一特定位置出现。

Regex代码

说明

匹配字符串

ab

表示一个字符串有一个 a 或 b(相当于 a|b)

ass,bkk 等

a-d

表示一个字符串包含小写的 a 到 d 中的一个(相当于 a¦b¦c¦d 或者 abcd)

1

表示一个以字母开头的字符串

0-9%

表示一个百分号前有一位的数字

,a-zA-Z0-9$

表示一个字符串以一个逗号后面跟着一个字母或数字结束

还可以在方括号里用 ^ 表示不希望出现的字符,^ 应在方括号里的第一位。

Regex代码

说明

匹配字符串

%^a-zA-Z%

表示两个百分号中不应该出现字母

%1%,b%2%a 等

为了逐字表达,你必须在**^.$()|___+,?,{,_* 这些字符前加上转移字符:**** 。

请注意在方括号中,不需要转义字符。

快捷命令

可以用以下的快捷命令来简化你的正则表达式

实际命令

快捷命令

0-9

\d

a-z_

\w

0次或多次发生

*

至少一次发生

+

0次或1次发生

?

示例

Regex代码

说明

匹配字符串

^+{0,1}(\d){1,3} ?(-?((\d)| ){1,12})+$

校验普通电话、传真号码:可以“+”或数字开头,可含有“-” 和 “ ”

+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999 等

^(\w){6,20}$

校验密码:只能输入6-20个字母、数字、下划线

^https{0,1}:\/\/.+$

校验URL

/ :表示字符“/”;. 表示所有字符的集;+ 等同于{1,},就是1到正无穷吧

^https{0,1}:\/\/.{1,n}$

表示url串的长度为length(“https://”) + n

^\u4E00-\u9FA5+$

校验纯中文字符

^\d+$

非负整数(正整数 + 0)

^0-9*1-9*$

正整数

^((-\d+)|(0+))$

非正整数(负整数 + 0)

^-0-9*1-9*$

负整数

^-?\d+$

整数

^\d+(.\d+)?$

非负浮点数(正浮点数 + 0)

^((0-9+.0-9*1-9*)|(0-9*1-9*.0-9+)|(0-9*1-9*))$

正浮点数

^((-\d+(.\d+)?)|(0+(.0+)?))$

非正浮点数(负浮点数 + 0)

^(-((0-9+.0-9*1-9*)|(0-9*1-9*.0-9+)|(0-9*1-9*)))$

负浮点数

^(-?\d+)(.\d+)?$

浮点数

^+-?\d+(.\d+)?$

浮点数前面可加**+或者-**

^A-Za-z+$

由26个英文字母组成的字符串

^A-Z+$

由26个英文字母的大写组成的字符串

^a-z+$

由26个英文字母的小写组成的字符串

^A-Za-z0-9+$

由数字和26个英文字母组成的字符串

^\w+$

由数字、26个英文字母或者下划线组成的字符串

^\w-+(.\w-+)*@\w-+(.\w-+)+$

email地址

^a-zA-z+://(\w+(-\w+)*)(.(\w+(-\w+)*))*(\?\S*)?$

url

^(\d{2}|\d{4})-((0(1-9{1}))|(11|2))-((0-2)|(30|1))$

年-月-日

^((0(1-9{1}))|(11|2))/((0-2)|(30|1))/(\d{2}|\d{4})$

月/日/年

^(w-.+)@(([0-9{1,3}.0-9{1,3}.0-9{1,3}.)|((w-+.)+))(a-zA-Z{2,4}|0-9{1,3})(]?)$

Emil

^(\d{1,2}|1\d\d|20-4\d|250-5).(\d{1,2}|1\d\d|20-4\d|250-5).(\d{1,2}|1\d\d|20-4\d|250-5).(\d{1,2}|1\d\d|20-4\d|250-5)$

IP地址

^(0-9A-F{2})(-0-9A-F{2}){5}$

MAC地址的正则表达式

^-+?\d+(.\d+)?$

值类型正则表达式

C#测试程序

主要是要使用 Regex 这个类,它的命名空间是 System.Text.RegularExpressions

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace RegexTester
{
    public partial class FormRegex : Form
    {
        public FormRegex()
        {
            InitializeComponent();
        }

        private void btn_Test_Click(object sender, EventArgs e)
        {
            setControl();          
        }

        private void t_Regex_TextChanged(object sender, EventArgs e)
        {
            setControl();
        }

        private void t_Test_TextChanged(object sender, EventArgs e)
        {
            setControl();
        }

#region Local Function

        public void setControl()
        {
            string str = t_Test.Text;
            string strReg = t_Regex.Text;
            if (("" == str)||("" == strReg))
            {
                lab_show.Text = "Match or Not";
                lab_show.ForeColor = Color.Black;
                lab_show.TextAlign = ContentAlignment.MiddleCenter; 
                return;
            }

            if (isMatchReg(str, strReg))
            {
                lab_show.Text = "√  Match";
                lab_show.ForeColor = Color.LawnGreen;
                lab_show.TextAlign = ContentAlignment.MiddleCenter;             
            }
            else
            {
                lab_show.Text = "×  Not Match";
                lab_show.ForeColor = Color.Red;
                lab_show.TextAlign = ContentAlignment.MiddleCenter;                
            }
        }

        public static bool isMatchReg(string str, string regStr)
        {
            //判断
            return Regex.IsMatch(str, regStr);
        }

#endregion

        private void FormRegex_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)//如果输入的是回车键
            {
                setControl();
            }
        }
        
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 基本概念
  • 具体实例
    • "*,+,?"的用法
      • "{}"的用法
        • "|"的用法
          • "."的用法
            • "[]"的用法
              • 快捷命令
                • 示例
                • C#测试程序
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档