C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计926个文字,预计阅读时间需要4分钟。
csharppublic static class StringExt{ static private Regex regexNumber=new Regex(@^\d+$); static public bool IsNumber(this string input) { if (string.IsNullOrEmpty(input)) { return false; } return regexNumber.IsMatch(input); }}
using System.Text.RegularExpressions;
public static class StringExt
{
static private Regex regexNumber = new Regex(@"\d+");
static public bool IsNumber(this string input)
{
if (string.IsNullOrEmpty(input))
{
return false;
}
return regexNumber.IsMatch(input);
}
public static string Convert2String(this Match match, string enter)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat("匹配的字符串为:{0}, 是否匹配成功{1}, 匹配到的字符串为{2}, 匹配的位置为{3}, 匹配的长度为{4},一共匹配到{5}个结果",
enter, match.Success, match.Value, match.Index, match.Length, match.Groups.Count);
return builder.ToString();
}
}
public class program
{
//我们没有为上面的类声明构造函数,但是我们可以像下面的形式来实例化它
public static void Main(string[] args)
{
//我们可以在String实例上调用这个方法了
// var abc = "123";
// var isNumber = abc.IsNumber();
#region 1、全数字判断
// Console.WriteLine("全数字的判断:");
// string[] enters = { "123123123", "123a123", "a123123", "", "0" };
// foreach (var enter in enters)
// {
// /*
// 该题的想法很简单,从”头“到”尾“,全是数字就可以了。打开手册,
// 看到表示开头的字符是^,
// 表示结尾的字符是$,
// 表示数字的字符是\d,
// 然后看到想要匹配多个字符,有两个选择,+和*,+是至少出现一次,*是0次或者多次,
//
// ^\d+$。这就完成了!好,让我们来试一试。
//
// 在c#中,正则表达式相关的类是System.Text.RegularExpressions.Regex,
// 其中我用到的方法有Match,Replace,和IsMatch,分别是匹配,替换和判断是否匹配的便捷方法。用法也很简单,看下我的例子就会明白了。
// */
// Console.WriteLine(
// Regex.Match(enter, @"^\d+$").Convert2String(enter));
// }
#endregion
#region 2、判断号码是否为合法的座机或者手机号码
// //Console.WriteLine("是否为合法的电话号码,电话号码的规则分两部分:");
// Console.WriteLine("固话为7-8位,手机为11位,且由1开头,且都为数字。");
// //string landPhoneRule = @"^\d{7,8}$";
// string handPhoneRule = @"^1\d{10}$";
// //规则合并
// //string rule = string.Format("{0}|{1}", landPhoneRule, handPhoneRule);
// string[] enters ={
// "1234567", //7位数字,合法
// "12345678", //8位数字,合法
// "13888888888", //11位以1开头的数字,合法
// "23888888888", //11位以2开头的数字,非法
// "0123456789", //10位数字,非法
// "1388888888a",//带有字符,非法
// "10111111111"//11数字,合法
// };
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, handPhoneRule));
// }
//
// Console.WriteLine("现改变手机的规则,改为:手机要以数字1开头,且第二位和第三位不能有数字0,其他不变");
// handPhoneRule = @"^1[1-9]{2}\d{8}$";
// //rule = string.Format("{0}|{1}", landPhoneRule, handPhoneRule);
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, handPhoneRule));
// }
#endregion
#region 判断IP地址是否正确
// Console.WriteLine("题目是判断一个IP是否合法,规则如下:");
// Console.WriteLine("格式必须是***.***.***.***");
// Console.WriteLine("其中第一组数字必须大于1, 每组数字都要小于等于255");
// //复杂版 ?<!
// string rule = @"^(\d{1,30})(?<!^({1,3}|2[6-9]\d|25[6-9]|[3-9]\d{2}))(.[01]?\d?\d|2[0-4]\d|25[0-5]){3}$";
// string[] enters =
// {
// "255.255.255.255", //非法
// "21.1.1.1", //合法
// "256.0.0.0", //非法
// "300.2.2.250", //非法
// "10.1.1.99", //合法
// "00.1.1.009",//非法
// "100.1.1.1"//合法
// };
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, rule).Convert2String(enter));
// }
#endregion
#region 正向预查 负向预查
/*
零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。
\w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
\w+(?!ing) 匹配不是以ing结尾的多个字符
(?<=re)\w+ 匹配以re开头的多个字符(不包括re)
(?<!re)\w+ 匹配不是以re开头的多个字符
(?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符
*/
string input = "1851 1999 1950 1905 2003";
string pattern = @"(?<=19)\d{2}\b";
foreach (Match match in Regex.Matches(input, pattern))
Console.WriteLine(match.Value);
#endregion
}
正则表达式手册:tool.oschina.netimg.558idc.com/uploadfile/apidocs/jquery/regexp.html
本文共计926个文字,预计阅读时间需要4分钟。
csharppublic static class StringExt{ static private Regex regexNumber=new Regex(@^\d+$); static public bool IsNumber(this string input) { if (string.IsNullOrEmpty(input)) { return false; } return regexNumber.IsMatch(input); }}
using System.Text.RegularExpressions;
public static class StringExt
{
static private Regex regexNumber = new Regex(@"\d+");
static public bool IsNumber(this string input)
{
if (string.IsNullOrEmpty(input))
{
return false;
}
return regexNumber.IsMatch(input);
}
public static string Convert2String(this Match match, string enter)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat("匹配的字符串为:{0}, 是否匹配成功{1}, 匹配到的字符串为{2}, 匹配的位置为{3}, 匹配的长度为{4},一共匹配到{5}个结果",
enter, match.Success, match.Value, match.Index, match.Length, match.Groups.Count);
return builder.ToString();
}
}
public class program
{
//我们没有为上面的类声明构造函数,但是我们可以像下面的形式来实例化它
public static void Main(string[] args)
{
//我们可以在String实例上调用这个方法了
// var abc = "123";
// var isNumber = abc.IsNumber();
#region 1、全数字判断
// Console.WriteLine("全数字的判断:");
// string[] enters = { "123123123", "123a123", "a123123", "", "0" };
// foreach (var enter in enters)
// {
// /*
// 该题的想法很简单,从”头“到”尾“,全是数字就可以了。打开手册,
// 看到表示开头的字符是^,
// 表示结尾的字符是$,
// 表示数字的字符是\d,
// 然后看到想要匹配多个字符,有两个选择,+和*,+是至少出现一次,*是0次或者多次,
//
// ^\d+$。这就完成了!好,让我们来试一试。
//
// 在c#中,正则表达式相关的类是System.Text.RegularExpressions.Regex,
// 其中我用到的方法有Match,Replace,和IsMatch,分别是匹配,替换和判断是否匹配的便捷方法。用法也很简单,看下我的例子就会明白了。
// */
// Console.WriteLine(
// Regex.Match(enter, @"^\d+$").Convert2String(enter));
// }
#endregion
#region 2、判断号码是否为合法的座机或者手机号码
// //Console.WriteLine("是否为合法的电话号码,电话号码的规则分两部分:");
// Console.WriteLine("固话为7-8位,手机为11位,且由1开头,且都为数字。");
// //string landPhoneRule = @"^\d{7,8}$";
// string handPhoneRule = @"^1\d{10}$";
// //规则合并
// //string rule = string.Format("{0}|{1}", landPhoneRule, handPhoneRule);
// string[] enters ={
// "1234567", //7位数字,合法
// "12345678", //8位数字,合法
// "13888888888", //11位以1开头的数字,合法
// "23888888888", //11位以2开头的数字,非法
// "0123456789", //10位数字,非法
// "1388888888a",//带有字符,非法
// "10111111111"//11数字,合法
// };
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, handPhoneRule));
// }
//
// Console.WriteLine("现改变手机的规则,改为:手机要以数字1开头,且第二位和第三位不能有数字0,其他不变");
// handPhoneRule = @"^1[1-9]{2}\d{8}$";
// //rule = string.Format("{0}|{1}", landPhoneRule, handPhoneRule);
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, handPhoneRule));
// }
#endregion
#region 判断IP地址是否正确
// Console.WriteLine("题目是判断一个IP是否合法,规则如下:");
// Console.WriteLine("格式必须是***.***.***.***");
// Console.WriteLine("其中第一组数字必须大于1, 每组数字都要小于等于255");
// //复杂版 ?<!
// string rule = @"^(\d{1,30})(?<!^({1,3}|2[6-9]\d|25[6-9]|[3-9]\d{2}))(.[01]?\d?\d|2[0-4]\d|25[0-5]){3}$";
// string[] enters =
// {
// "255.255.255.255", //非法
// "21.1.1.1", //合法
// "256.0.0.0", //非法
// "300.2.2.250", //非法
// "10.1.1.99", //合法
// "00.1.1.009",//非法
// "100.1.1.1"//合法
// };
// foreach (var enter in enters)
// {
// Console.WriteLine(Regex.Match(enter, rule).Convert2String(enter));
// }
#endregion
#region 正向预查 负向预查
/*
零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。
\w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
\w+(?!ing) 匹配不是以ing结尾的多个字符
(?<=re)\w+ 匹配以re开头的多个字符(不包括re)
(?<!re)\w+ 匹配不是以re开头的多个字符
(?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符
*/
string input = "1851 1999 1950 1905 2003";
string pattern = @"(?<=19)\d{2}\b";
foreach (Match match in Regex.Matches(input, pattern))
Console.WriteLine(match.Value);
#endregion
}
正则表达式手册:tool.oschina.netimg.558idc.com/uploadfile/apidocs/jquery/regexp.html

