C# 正则表达式 判断各种字符串(如手机号)

  1 using System;
  2 using System.Text.RegularExpressions;
  3 namespace MetarCommonSupport
  4 {
  5     /// <summary>
  6     /// 通过Framwork类库中的Regex类实现了一些特殊功能数据检查
  7     /// </summary>
  8     public class MetarnetRegex
  9     {
 10
 11         private static MetarnetRegex instance = null;
 12         public static MetarnetRegex GetInstance()
 13         {
 14             if (MetarnetRegex.instance == null)
 15             {
 16                 MetarnetRegex.instance = new MetarnetRegex();
 17             }
 18             return MetarnetRegex.instance;
 19         }
 20         private MetarnetRegex()
 21         {
 22         }
 23         /// <summary>
 24         /// 判断输入的字符串只包含汉字
 25         /// </summary>
 26         /// <param name="input"></param>
 27         /// <returns></returns>
 28         public static bool IsChineseCh(string input)
 29         {
 30             Regex regex = new Regex("^[\u4e00-\u9fa5]+$");
 31             return regex.IsMatch(input);
 32         }
 33         /// <summary>
 34         /// 匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,
 35         /// 也可以不用,区号与本地号间可以用连字号或空格间隔,
 36         /// 也可以没有间隔
 37         /// \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}|\(0\d{3}\)[- ]?\d{7}|0\d{3}[- ]?\d{7}
 38         /// </summary>
 39         /// <param name="input"></param>
 40         /// <returns></returns>
 41         public static bool IsPhone(string input)
 42         {
 43             string pattern = "^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$";
 44             Regex regex = new Regex(pattern);
 45             return regex.IsMatch(input);
 46         }
 47         /// <summary>
 48         /// 判断输入的字符串是否是一个合法的手机号
 49         /// </summary>
 50         /// <param name="input"></param>
 51         /// <returns></returns>
 52         public static bool IsMobilePhone(string input)
 53         {
 54             Regex regex = new Regex("^13\\d{9}$");
 55             return regex.IsMatch(input);
 56
 57         }
 58
 59
 60         /// <summary>
 61         /// 判断输入的字符串只包含数字
 62         /// 可以匹配整数和浮点数
 63         /// ^-?\d+$|^(-?\d+)(\.\d+)?$
 64         /// </summary>
 65         /// <param name="input"></param>
 66         /// <returns></returns>
 67         public static bool IsNumber(string input)
 68         {
 69             string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\d+)?$";
 70             Regex regex = new Regex(pattern);
 71             return regex.IsMatch(input);
 72         }
 73         /// <summary>
 74         /// 匹配非负整数
 75         ///
 76         /// </summary>
 77         /// <param name="input"></param>
 78         /// <returns></returns>
 79         public static bool IsNotNagtive(string input)
 80         {
 81             Regex regex = new Regex(@"^\d+$");
 82             return regex.IsMatch(input);
 83         }
 84         /// <summary>
 85         /// 匹配正整数
 86         /// </summary>
 87         /// <param name="input"></param>
 88         /// <returns></returns>
 89         public static bool IsUint(string input)
 90         {
 91             Regex regex = new Regex("^[0-9]*[1-9][0-9]*$");
 92             return regex.IsMatch(input);
 93         }
 94         /// <summary>
 95         /// 判断输入的字符串字包含英文字母
 96         /// </summary>
 97         /// <param name="input"></param>
 98         /// <returns></returns>
 99         public static bool IsEnglisCh(string input)
100         {
101             Regex regex = new Regex("^[A-Za-z]+$");
102             return regex.IsMatch(input);
103         }
104
105
106         /// <summary>
107         /// 判断输入的字符串是否是一个合法的Email地址
108         /// </summary>
109         /// <param name="input"></param>
110         /// <returns></returns>
111         public static bool IsEmail(string input)
112         {
113             string pattern = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
114             Regex regex = new Regex(pattern);
115             return regex.IsMatch(input);
116         }
117
118
119         /// <summary>
120         /// 判断输入的字符串是否只包含数字和英文字母
121         /// </summary>
122         /// <param name="input"></param>
123         /// <returns></returns>
124         public static bool IsNumAndEnCh(string input)
125         {
126             string pattern = @"^[A-Za-z0-9]+$";
127             Regex regex = new Regex(pattern);
128             return regex.IsMatch(input);
129         }
130
131
132         /// <summary>
133         /// 判断输入的字符串是否是一个超链接
134         /// </summary>
135         /// <param name="input"></param>
136         /// <returns></returns>
137         public static bool IsURL(string input)
138         {
139             //string pattern = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
140             string pattern = @"^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$";
141             Regex regex = new Regex(pattern);
142             return regex.IsMatch(input);
143         }
144
145
146         /// <summary>
147         /// 判断输入的字符串是否是表示一个IP地址
148         /// </summary>
149         /// <param name="input">被比较的字符串</param>
150         /// <returns>是IP地址则为True</returns>
151         public static bool IsIPv4(string input)
152         {
153
154             string[] IPs = input.Split(‘.‘);
155             Regex regex = new Regex(@"^\d+$");
156             for (int i = 0; i < IPs.Length; i++)
157             {
158                 if (!regex.IsMatch(IPs[i]))
159                 {
160                     return false;
161                 }
162                 if (Convert.ToUInt16(IPs[i]) > 255)
163                 {
164                     return false;
165                 }
166             }
167             return true;
168         }
169
170
171         /// <summary>
172         /// 计算字符串的字符长度,一个汉字字符将被计算为两个字符
173         /// </summary>
174         /// <param name="input">需要计算的字符串</param>
175         /// <returns>返回字符串的长度</returns>
176         public static int GetCount(string input)
177         {
178             return Regex.Replace(input, @"[\u4e00-\u9fa5/g]", "aa").Length;
179         }
180
181         /// <summary>
182         /// 调用Regex中IsMatch函数实现一般的正则表达式匹配
183         /// </summary>
184         /// <param name="pattern">要匹配的正则表达式模式。</param>
185         /// <param name="input">要搜索匹配项的字符串</param>
186         /// <returns>如果正则表达式找到匹配项,则为 true;否则,为 false。</returns>
187         public static bool IsMatch(string pattern, string input)
188         {
189             Regex regex = new Regex(pattern);
190             return regex.IsMatch(input);
191         }
192
193         /// <summary>
194         /// 从输入字符串中的第一个字符开始,用替换字符串替换指定的正则表达式模式的所有匹配项。
195         /// </summary>
196         /// <param name="pattern">模式字符串</param>
197         /// <param name="input">输入字符串</param>
198         /// <param name="replacement">用于替换的字符串</param>
199         /// <returns>返回被替换后的结果</returns>
200         public static string Replace(string pattern, string input, string replacement)
201         {
202             Regex regex = new Regex(pattern);
203             return regex.Replace(input, replacement);
204         }
205
206         /// <summary>
207         /// 在由正则表达式模式定义的位置拆分输入字符串。
208         /// </summary>
209         /// <param name="pattern">模式字符串</param>
210         /// <param name="input">输入字符串</param>
211         /// <returns></returns>
212         public static string[] Split(string pattern, string input)
213         {
214             Regex regex = new Regex(pattern);
215             return regex.Split(input);
216         }
217         /// <summary>
218         /// 判断输入的字符串是否是合法的IPV6 地址
219         /// </summary>
220         /// <param name="input"></param>
221         /// <returns></returns>
222         public static bool IsIPV6(string input)
223         {
224             string pattern = "";
225             string temp = input;
226             string[] strs = temp.Split(‘:‘);
227             if (strs.Length > 8)
228             {
229                 return false;
230             }
231             int count = MetarnetRegex.GetStringCount(input, "::");
232             if (count > 1)
233             {
234                 return false;
235             }
236             else if (count == 0)
237             {
238                 pattern = @"^([\da-f]{1,4}:){7}[\da-f]{1,4}$";
239
240                 Regex regex = new Regex(pattern);
241                 return regex.IsMatch(input);
242             }
243             else
244             {
245                 pattern = @"^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$";
246                 Regex regex1 = new Regex(pattern);
247                 return regex1.IsMatch(input);
248             }
249
250         }
251         /* *******************************************************************
252         * 1、通过“:”来分割字符串看得到的字符串数组长度是否小于等于8
253         * 2、判断输入的IPV6字符串中是否有“::”。
254         * 3、如果没有“::”采用 ^([\da-f]{1,4}:){7}[\da-f]{1,4}$ 来判断
255         * 4、如果有“::” ,判断"::"是否止出现一次
256         * 5、如果出现一次以上 返回false
257         * 6、^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$
258         * ******************************************************************/
259         /// <summary>
260         /// 判断字符串compare 在 input字符串中出现的次数
261         /// </summary>
262         /// <param name="input">源字符串</param>
263         /// <param name="compare">用于比较的字符串</param>
264         /// <returns>字符串compare 在 input字符串中出现的次数</returns>
265         private static int GetStringCount(string input, string compare)
266         {
267             int index = input.IndexOf(compare);
268             if (index != -1)
269             {
270                 return 1 + GetStringCount(input.Substring(index + compare.Length), compare);
271             }
272             else
273             {
274                 return 0;
275             }
276
277         }
278     }
279 }

				
时间: 2024-11-09 06:06:01

C# 正则表达式 判断各种字符串(如手机号)的相关文章

判断一个字符串是不是手机号

//判断手机号是否正确 - (BOOL)checkTel:(NSString *)str { if ([str length] == 0) { UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"手机号不能为空" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert

Java正则表达式判断一个字符串是否是ipv4地址

public class StringTest { public static void main(String[] args) { String regex = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"; String str1 = "1.1.1.0"; boolean flag1 = str1.matches(regex); System.

正则表达式判断手机号

//正则表达式判断手机号格式 - (BOOL)checkTel:(NSString *)str { if ([str length] == 0) { UIAlertView* alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"data_null_prompt", nil) message:NSLocalizedString(@"tel_no_null", nil) delegate:nil

使用正则表达式判断字符串是否为MAC地址

今天Boss给了一个小任务,要求给定一个字符串,判断该字符串是否是MAC地址,并用Java和正则表达式实现.于是我顺便百度了下MAC地址,并在cmd下使用getmac获取本机的MAC地址,了解了一点后,就用Java实现了.为了方便测试与输入输出,选择使用Android作为UI交互.反正都是用Java,对于这个问题,一个Java项目和Android区别不大. 首先看一个MAC地址:48-5D-60-61-3D-C5.其中由6个字节(十六进制)组成,简单理解为数字.大小写字母(a-fA-F).短横线

C# 判断一字符串是否为合法数字(正则表达式)

判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; return Regex.IsMatch(s,pattern); } 判断一个字符串是否为合法数字(0-32整数) public static bool IsNumber(string s) { return IsNumber(s,32,0); } 判断一个字符串是否为合法数字(指定整数位数和小数位数) //

判断一个字符串是否包含一个子串的方法

在我们前端日常开发中,经常会遇到判断一个字符串中是否包含某个子串,在此篇文章,我们将去探究一些解决此种需求的方法以及正确的使用它们.理想情况下,我们要找的是一个能匹配我们的目的(if x contains y)的方法,并返回true或false. 一.String.prototype.indexOf和String.prototype.lastIndexOf i这两个方法,可能是我们最容易想到的,如果包含子串,则返回大于等于0的索引,否则返回-1,没有达到我们的理想情况. var str = "M

JavaScript中正则表达式判断匹配规则以及常用的方法

JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了. \d可以匹配一个数字                 '00\d'可以匹配'007' ,'\d\d\d'可以匹配'010' \w可以匹配一个字母或数字      '\w\w'可以匹配'js' \s可

正则表达式及R字符串处理之终结版

转载于: 正则表达式及R字符串处理之终结版 0.动机:为什么学习字符串处理 传统的统计学教育几乎没有告诉过我们,如何进行文本的统计建模分析.然而,我们日常生活中接触到的大部分数据都是以文本的形式存在.文本分析与挖掘在业界中也有着非常广泛的应用. 由于文本数据大多属于非结构化的数据,要想对文本数据进行传统的统计模型分析,必须要经过层层的数据清洗与整理. 今天我们要介绍的『正则表达式及R字符串处理』就是用来干这一种脏活累活的. 与建立酷炫的模型比起来,数据的清洗与整理似乎是一种低档次的工作.如果把建

java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断方法,如下: // 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { return strNum.matches("[0-9]{1,}"); } // 判断一个字符串是否都为数字 public boolean isDigit(Str