(转)C#正则表达式

"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\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}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|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+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址
YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
匹配空行的正则表达式:\n[\s| ]*\r
空行 ^\s*\Z(经本人测试这个在VS08上是肯定可以的)
    i> 字符串 "(\\?.)*?"
       正则表达式中除 . $ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配。在上面的式子中,两边的quotation mark就是指匹配字符串两边的引号。“\\”表示一个“\”字符。后面紧跟的“?”表示匹配零个或一个字符。“.” 与除 \n 之外的任何字符匹配。
       “()”表示捕获匹配的子字符串。使用 () 的捕获根据左括号的顺序从1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。括号后面的“*”表示存在一个或多个这样的子字符串。即“*”是作用于“(\\?.)”的。
       “?”的存在使空字符串也可以被捕获。
    ii> 逐字字符串 @"(""|.)*?"
       匹配类似于 @"Hello ""World ""!" 的字符串。
       与用 | (垂直条)字符分隔的任何一个术语匹配;例如, cat|dog|tiger 。使用最左侧的成功匹配。
    iii> C# 文档信息中的xml元素 ///\s*<.*>
       匹配C#自动化XML文档。“\s”表示任何空白字符。需要注意的是,请不要随意修改大小写。因为在正则表达式是大小写敏感的,在它的通配符中,大小写字符往往表示完全相反的意思。比如,“\S”表示任何非空白字符。(下面的 “\Z”也是这样)
    iv> C# 文档信息中的内容 ///\s?.*
    v> 空行 ^\s*\Z
       “^”指定匹配必须出现在字符串的开头或行的开头。而“\Z”表示指定匹配必须出现在字符串的结尾或字符串结尾的 \n 之前。
    vi> C# 注释 //.*
    vii> C# 关键字 (abstract|where|while|yield){1}(\.|(\s)+|;|,|\(|\[){1}
       篇幅所限,这儿只列出了很少几个关键字(C#有至少80个关键字 ^_^)。需要注意的是,解析器会匹配左边第一个成功项。因此,具有包含关系的单词应注意顺序:包含者要放在被包含者之前。例如:(in|int) 解析其会查不到 int,所以应该是 (int|in)。
       除此之外还有,所有的括号 (\{|\[|\(|\}|\]|\)) 。

posted @ 2009-06-06 09:05  青衫  阅读(321)  评论(0编辑  收藏  举报