c#

位置:IT落伍者 >> c# >> 浏览文章

C#中的常用正则表达式总结


发布日期:2024年08月07日
 
C#中的常用正则表达式总结

这是我发了不少时间整理的C#的正则表达式新手朋友注意一定要手册一下哦这样可以节省很多写代码的时间中国自学编程网为新手朋友整理发布

只能输入数字^[]*$

只能输入n位的数字^\d{n}$

只能输入至少n位的数字^\d{n}$

只能输入m~n位的数字^\d{mn}$

只能输入零和非零开头的数字^(|[][]*)$

只能输入有两位小数的正实数^[]+([]{})?$

只能输入有~位小数的正实数^[]+([]{})?$

只能输入非零的正整数^\+?[][]*$

只能输入非零的负整数^\[][]*$

只能输入长度为的字符^{}$

只能输入由个英文字母组成的字符串^[AZaz]+$

只能输入由个大写英文字母组成的字符串^[AZ]+$

只能输入由个小写英文字母组成的字符串^[az]+$

只能输入由数字和个英文字母组成的字符串^[AZaz]+$

只能输入由数字个英文字母或者下划线组成的字符串^\w+$

验证用户密码^[azAZ]\w{}$正确格式为以字母开头长度在~之间只能包含字符数字和下划线

验证是否含有^%&;=?$\等字符[^%&;=?$\x]+

只能输入汉字^[\ue\ufa]{}$

验证Email地址^\w+([+]\w+)*@\w+([]\w+)*\\w+([]\w+)*$

验证InternetURL//([\w]+\)+[\w]+(/[\w/?%&=]*)?$

验证电话号码^(\(\d{})|\d{})?\d{}$正确格式为XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

验证身份证号(位或位数字)^\d{}|\d{}$

验证一年的个月^(?[]|[])$正确格式为

验证一个月的^((?[])|((|)[])||)$正确格式为;

利用正则表达式限制网页表单里的文本框输入内容

用正则表达式限制只能输入中文onkeyup=value=valuereplace(/[^\uE\uFA]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\uE\uFA]/g))

用正则表达式限制只能输入全角字符 onkeyup=value=valuereplace(/[^\uFF\uFFFF]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\uFF\uFFFF]/g))

用正则表达式限制只能输入数字onkeyup=value=valuereplace(/[^\d]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\d]/g))

用正则表达式限制只能输入数字和英文onkeyup=value=valuereplace(/[\W]/g) onbeforepaste=clipboardDatasetData(textclipboardDatagetData(text)replace(/[^\d]/g))

得用正则表达式从URL地址中提取文件名的javascript程序如下结果为page

以下是引用片段

s=

s=sreplace(/(*\/){}([^\]+)*/ig$)

alert(s)

匹配双字节字符(包括汉字在内)[^\x\xff]

应用计算字符串的长度(一个双字节字符长度计ASCII字符计)

以下是引用片段

Stringprototypelen=function(){returnthisreplace([^\x\xff]/gaa)length;}

匹配空行的正则表达式\n[\s| ]*\r

匹配HTML标记的正则表达式/<(*)>*<\/\>|<(*) \/>/

匹配首尾空格的正则表达式(^\s*)|(\s*$)

以下是引用片段

Stringprototypetrim=function()

{

returnthisreplace(/(^\s*)|(\s*$)/g);

}

利用正则表达式分解和转换IP地址

下面是利用正则表达式匹配IP地址并将IP地址转换

成对应数值的Javascript程序

以下是引用片段

functionIPV(ip)

{

re=/(\d+)\(\d+)\(\d+)\(\d+)/g//匹配IP地址的正则表达式

if(retest(ip))

{

returnRegExp$*Mathpow())+RegExp$*Mathpow())+RegExp$*+RegExp$*

}

else

{

thrownewError(NotavalidIPaddress!)

}

}

不过上面的程序如果不用正则表达式而直接用split函数来分解可能更简单程序如下

以下是引用片段

varip=

ip=ipsplit()

alert(IP值是+(ip[]***+ip[]**+ip[]*+ip[]*))

符号解释

\

将下一个字符标记为一个特殊字符或一个原义字符或一个 向后引用或一个八进制转义符例如n 匹配字符 n\n 匹配一个换行符序列 \\ 匹配 \\( 则匹配 (

^

匹配输入字符串的开始位置如果设置了 RegExp 对象的 Multiline 属性^ 也匹配 \n\r 之后的位置

$

匹配输入字符串的结束位置如果设置了RegExp 对象的 Multiline 属性$ 也匹配 \n\r 之前的位置

*

匹配前面的子表达式零次或多次例如zo* 能匹配 z 以及 zoo* 等价于{}

+

匹配前面的子表达式一次或多次例如zo+ 能匹配 zo 以及 zoo但不能匹配 z+ 等价于 {}

?

匹配前面的子表达式零次或一次例如do(es)? 可以匹配 dodoes 中的do ? 等价于 {}

{n}

n 是一个非负整数匹配确定的 n 次例如o{} 不能匹配 Bob 中的 o但是能匹配 food 中的两个 o

{n}

n 是一个非负整数至少匹配n 次例如o{} 不能匹配 Bob 中的 o但能匹配 foooood 中的所有 oo{} 等价于 o+o{} 则等价于 o*

{nm}

m 和 n 均为非负整数其中n <= m最少匹配 n 次且最多匹配 m 次例如o{} 将匹配 fooooood 中的前三个 oo{} 等价于 o?请注意在逗号和两个数之间不能有空格

?

当该字符紧跟在任何一个其他限制符 (* + ? {n} {n} {nm}) 后面时匹配模式是非贪婪的非贪婪模式尽可能少的匹配所搜索的字符串而默认的贪婪模式则尽可能多的匹配所搜索的字符串例如对于字符串 ooooo+? 将匹配单个 oo+ 将匹配所有 o

匹配除 \n 之外的任何单个字符要匹配包括 \n 在内的任何字符请使用象 [\n] 的模式

(pattern)

匹配 pattern 并获取这一匹配所获取的匹配可以从产生的 Matches 集合得到在VBScript 中使用 SubMatches 集合在JScript 中则使用 $…$ 属性要匹配圆括号字符请使用 \(\)

(?:pattern)

匹配 pattern 但不获取匹配结果也就是说这是一个非获取匹配不进行存储供以后使用这在使用 字符 (|) 来组合一个模式的各个部分是很有用例如 industr(?:y|ies) 就是一个比 industry|industries 更简略的表达式

(?=pattern)

正向预查在任何匹配 pattern 的字符串开始处匹配查找字符串这是一个非获取匹配也就是说该匹配不需要获取供以后使用例如Windows (?=||NT|) 能匹配 Windows 中的 Windows 但不能匹配 Windows 中的 Windows预查不消耗字符也就是说在一个匹配发生后在最后一次匹配之后立即开始下一次匹配的搜索而不是从包含预查的字符之后开始

(?!pattern)

负向预查在任何不匹配 pattern 的字符串开始处匹配查找字符串这是一个非获取匹配也就是说该匹配不需要获取供以后使用例如Windows (?!||NT|) 能匹配 Windows 中的 Windows但不能匹配 Windows 中的 Windows预查不消耗字符也就是说在一个匹配发生后在最后一次匹配之后立即开始下一次匹配的搜索而不是从包含预查的字符之后开始

x|y

匹配 x 或 y例如z|food 能匹配 zfood(z|f)ood 则匹配 zoodfood

[xyz]

字符集合匹配所包含的任意一个字符例如 [abc] 可以匹配 plain 中的 a

[^xyz]

负值字符集合匹配未包含的任意字符例如 [^abc] 可以匹配 plain 中的p

[az]

字符范围匹配指定范围内的任意字符例如[az] 可以匹配 az 范围内的任意小写字母字符

[^az]

负值字符范围匹配任何不在指定范围内的任意字符例如[^az] 可以匹配任何不在 az 范围内的任意字符

\b

匹配一个单词边界也就是指单词和空格间的位置例如 er\b 可以匹配never 中的 er但不能匹配 verb 中的 er

\B

匹配非单词边界er\B 能匹配 verb 中的 er但不能匹配 never 中的 er

\cx

匹配由 x 指明的控制字符例如 \cM 匹配一个 ControlM 或回车符x 的值必须为 AZ 或 az 之一否则将 c 视为一个原义的 c 字符

\d

匹配一个数字字符等价于 []

\D

匹配一个非数字字符等价于 [^]

\f

匹配一个换页符等价于 \xc 和 \cL

\n

匹配一个换行符等价于 \xa 和 \cJ

\r

匹配一个回车符等价于 \xd 和 \cM

\s

匹配任何空白字符包括空格制表符换页符等等等价于 [ \f\n\r\t\v]

\S

匹配任何非空白字符等价于 [^ \f\n\r\t\v]

\t

匹配一个制表符等价于 \x 和 \cI

\v

匹配一个垂直制表符等价于

\xb 和 \cK

\w

匹配包括下划线的任何单词字符等价于[AZaz_]

\W

匹配任何非单词字符等价于 [^AZaz_]

\xn

匹配 n其中 n 为十六进制转义值十六进制转义值必须为确定的两个数字长例如\x 匹配 A\x 则等价于 \x & 正则表达式中可以使用 ASCII 编码

\num

匹配 num其中 num 是一个正整数对所获取的匹配的引用例如()\ 匹配两个连续的相同字符

\n

标识一个八进制转义值或一个向后引用如果 \n 之前至少 n 个获取的子表达式则 n 为向后引用否则如果 n 为八进制数字 ()则 n 为一个八进制转义值

\nm

标识一个八进制转义值或一个向后引用如果 \nm 之前至少有 nm 个获得子表达式则 nm 为向后引用如果 \nm 之前至少有 n 个获取则 n 为一个后跟文字 m 的向后引用如果前面的条件都不满足若 n 和 m 均为八进制数字 ()则 \nm 将匹配八进制转义值 nm

\nml

如果 n 为八进制数字 ()且 m 和 l 均为八进制数字 ()则匹配八进制转义值 nml

\un

匹配 n其中 n 是一个用四个十六进制数字表示的 Unicode 字符例如 \uA 匹配版权符号 (?)

               

上一篇:c#产生随机颜色

下一篇:在.NET环境下为网站增加IP过滤功能