【Unity3D日常开发】(二十六)Unity3D中使用正则表达式

举报
恬静的小魔龙 发表于 2021/12/09 17:42:14 2021/12/09
【摘要】 推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 一、前言正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Per...

推荐阅读

一、前言

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。
例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

二、Unity使用正则表达式

匹配正整数:

using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "123";
        Debug.Log(IsNumber(temp));
    }

    ///<summary> 
    ///匹配正整数
    ///</summary> 
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsNumber(string strInput)
    {
        Regex reg = new Regex("^[0-9]*[1-9][0-9]*$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

结果:
在这里插入图片描述

匹配大写字母

using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "ABC";
        Debug.Log(IsNumber(temp));
    }
    ///<summary>
    ///匹配由26个英文字母的大写组成的字符串
    ///</summary>
    ///<param name="strInput"></param>
    ///<returns></returns>
    public bool IsCapital(string strInput)
    {
        Regex reg = new Regex("^[A-Z]+$");
        if (reg.IsMatch(strInput))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

结果:
在这里插入图片描述

三、Regex 类

Regex 类用于表示一个正则表达式。

下表列出了 Regex 类中一些常用的方法:

序号 方法 描述
1 public bool IsMatch( string input ) 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项。
2 public bool IsMatch( string input, int startat ) 指示 Regex 构造函数中指定的正则表达式是否在指定的输入字符串中找到匹配项,从字符串中指定的开始位置开始。
3 public static bool IsMatch( string input, string pattern ) 指示指定的正则表达式是否在指定的输入字符串中找到匹配项。
4 public MatchCollection Matches( string input ) 在指定的输入字符串中搜索正则表达式的所有匹配项。
5 public string Replace( string input, string replacement ) 在指定的输入字符串中,把所有匹配正则表达式模式的所有匹配的字符串替换为指定的替换字符串。
6 public string[] Split( string input ) 把输入字符串分割为子字符串数组,根据在 Regex 构造函数中指定的正则表达式模式定义的位置进行分割。

如需了解 Regex 类的完整的属性列表,请参阅微软的 C# 文档。

四、常用正则表达式

^-?\d+$   	   //匹配整数(包含正负整数)
^(-?\d+)(\.\d+)?$  //匹配浮点数(包含正负浮点数)
^[A-Za-z]+$  		//匹配26个英文字母(包含大小写)
^[A-Z]+$  		//匹配由26个英文字母(大写)
^[a-z]+$  		//匹配由26个英文字母(小写)
^[A-Za-z0-9]+$  	//匹配由数字和26个英文字母组成的字符串
^\w+$  			//匹配由数字、26个英文字母或者下划线组成的字符串
\S{6,} 				//不能为空 六位以上
[^\x00-\xff] 		//匹配双字节字符(包括汉字在内)
\d+\.\d+\.\d+\.\d+	//匹配ip地址
序号 代码 描述
1 ^\d+$ 匹配非负整数(正整数 + 0)
2 ^[0-9]*[1-9][0-9]*$ 匹配正整数
3 ^((-\d+)|(0+))$ 匹配非正整数(负整数 + 0)
4 ^-[0-9]*[1-9][0-9]*$ 匹配负整数
5 ^-?\d+$ 匹配整数
6 ^\d+(\.\d+)?$ 匹配非负浮点数(正浮点数 + 0)
7 ^(([0-9]+\.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$ 匹配正浮点数
8 ^((-\d+(.\d+)?)|(0+(.0+)?))$ 匹配非正浮点数(负浮点数 + 0)
9 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$ 匹配负浮点数
10 ^(-?\d+)(.\d+)?$ 匹配浮点数
11 ^[A-Za-z]+$ 匹配由26个英文字母组成的字符串
12 ^[A-Z]+$ 匹配由26个英文字母的大写组成的字符串
13 ^[a-z]+$ 匹配由26个英文字母的小写组成的字符串
14 ^[A-Za-z0-9]+$ 匹配由数字和26个英文字母组成的字符串
15 ^\w+$ 匹配由数字、26个英文字母或者下划线组成的字符串
16 ^[\w-]+(.[\w-]+)*@[\w-]+(.[\w-]+)+$ 匹配email地址
17 ^[a-zA-z]+://匹配(\w+(-\w+))(.(\w+(-\w+)))(?\S)?$ 匹配url
18 [\u4e00-\u9fa5] 匹配中文字符的正则表达式
19 [^\x00-\xff] 匹配双字节字符(包括汉字在内)
20 String.prototype.len=function(){return this.replace([^\x00-\xff]/g,“aa”).length;} 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
21 \n[\s| ]*\r 匹配空行的正则表达式
22 /<(.*)>.</\1>|<(.) /> 匹配HTML标记的正则表达式
23 (^\s*)|(\s*$) 匹配首尾空格的正则表达式

五、实例

实例 1 、匹配以 ‘m’ 开头以 ‘e’ 结尾的单词

using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "make maze and manage to measure it";
        MatchStr(temp);
    }

    public void MatchStr(string str)
    {
        Regex reg = new Regex(@"\bm\S*e\b");
        MatchCollection mat = reg.Matches(str);
        foreach (Match item in mat)
        {
            Debug.Log(item);
        }
    }
}



在这里插入图片描述

实例2、 替换掉多余的空格

using System.Text.RegularExpressions;
using UnityEngine;

public class Regex_Test : MonoBehaviour
{
    void Start()
    {
        string temp = "Hello              World";
        MatchStr(temp);
    }


    public void MatchStr(string str)
    {
        Regex reg = new Regex("\\s+");
        Debug.Log(reg.Replace(str, " "));
    }
}



在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。