第一部分 简介
正则表达式Regular Expression,通常简写为regex。定义一个字符串规则主要用来
- 判断字符串是否是或含有符合regex定义的规则的字符串。 Regex.IsMatch
- 获取字符串中符合regex定义的规则的字符串。Regex.Match
- 替换字符串中符合regex定义的规则的字符串。Regex.Replace
第二部分 语法
- 字符匹配语法
- 重复匹配语法
- 字符定位语法
- 转义匹配语法
-
字符匹配语法
用于比较单个字符
(\之后的字母是小写表示满足条件的.
如d=digit, 大写则表明不满足D=非digit
w=word
s= space
)
\d 匹配数字
\D 匹配非数字
\w 匹配0-9 a-z A-Z其中任意,相当于【0-9a-zA-Z】
\W 匹配非\w 相当于【……0-9a-zA-Z】
\s 空白字符即空格
\S 非空格
. 任意
[] 匹配括号中任一个字符
[^] 字符不是括号中的任一个字符
-
重复匹配语法
跟在字符匹配语法后,表明 比较单字符多少次,可以用来比较一串连续的字符
{n} 匹配字符n次
\d{3} = \d\d\d
{n,} 匹配字符n+次
{n,m} 匹配n到m次之间
? 不匹配或者只匹配一次
+ 匹配一次或多次
* 匹配任意次或者不匹配
-
字符定位语法
定位字符匹配语法
^ 字符串开始位置, 处理多行时表示该行开始
^^ 文件开头
$ 字符串结束位置, 处理多行时表示该行结束
$$ 文件结尾
\b 单词边界
\+元字符匹配元字符
如\. \* \\
...
-
转义匹配语法
\n匹配换行
\r匹配回车
\t制表符
……
-
分支条件
条件1|条件2
满足任一条件即可
^\d{3}$|^\d{4}$
-
分组
()
如(\d{1,3}\.){3}\d{1,3}表示(1到3位数字加点)重复3次然后是1到3位数字,
用于表示ip地址。如 192.168.0.29
小括号也可以用来注释
(?#comment)
如2[0-4]\d(?#200-249)
- 后向引用
()()() 即之前的分组内容之后可以用 \1 \2 \3 来表示
- 零宽断言
(?=exp) 结尾匹配exp
-
负向零宽断言
(?!exp) 此位置之后不能是exp
\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字;
\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。
第三部分 regex学习测试方法(u3d)
测试text是否符合pattern的规则,赋予result。
using UnityEngine;
using System.Collections;
using System.Text.RegularExpressions;
public class testString : MonoBehaviour {
public string pattern;
public string text;
void OnGUI () {
if(GUI.Button(new Rect(0,0,100,100),"Check"))
{
Regex myReg = new Regex(string.Format(@"{0}",pattern));
bool reslut = myReg.IsMatch(text);
print(string.Format("Pattern: {0} String: {1} Result: {2}",pattern,text,reslut));
}
}
}
第四部分 c#例子
例一:
整数:-?/d+$
例二:
账号输入格式判断:3-16位字母数字@_. (可用邮箱)
Regex.IsMatch(text,@"^[a-zA-Z0-9@_.]{3,13}$");
例三:
密码输入格式判断:3-16位字母或数字
Regex.IsMatch(text,@"^[a-zA-Z0-9]{3,13}$");
例四:
名字输入格式判断:2~6个中文,或4~12个英文字母或者数字
return Regex.IsMatch(text,@"^(([\u4e00-\u9fa5])|([a-zA-Z0-9]{1,2})){2,6}$");
转载自风宇冲Unity3D教程学院