求解三个简单的正则表达式 1、校验整数的正则表达式,并从表达式中提取出数值2、校验浮点数的正则表达式,可包含小数点或不包含小数点,并从表达式中提取出有效浮点数;3、校验日期格式的正则表达式,可包含时分秒,并从表达式中提取出日期。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary> /// 整数判断 /// </summary> /// <param name="_s"></param> /// <returns></returns> public static bool IsInteger(string _s) { return Regex.IsMatch(_s,@"^[+-]{0,1}([1-7]?[0-8]?[0-9]{0,28}|[1-9][0-9]?|0)(\.0{0,28})$"); } /// <summary> /// 非整数判断 /// </summary> /// <param name="_s"></param> /// <returns></returns> public static bool IsNoIntNumber(string _s) { return Regex.IsMatch(_s,@"^[+-]{0,1}([1-7]?[0-8]?[0-9]{0,28}|[1-9][0-9]?|0)(|\.[0-9]{1,28})$"); } /// <summary> /// 时间判断 /// </summary> /// <param name="_s"></param> /// <returns></returns> public static bool IsTime(string _s) { string pattern = @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$"; return Regex.IsMatch(_s,pattern); } /// <summary> /// 日期判断 /// </summary> /// <param name="_s"></param> /// <returns></returns> public static bool IsDate(string _s) { if (_s.Length < 8) { return false; } string pattern = @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; return Regex.IsMatch(_s,pattern); } /// <summary> /// 日期时间判断 /// </summary> /// <param name="_s"></param> /// <returns></returns> public static bool IsDateTime(string _s) { if (_s.Length < 8) { return false; } string pattern = @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; pattern += @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]{1}[0-9])))))$"; return Regex.IsMatch(_s,pattern); } IsInteger("12")怎么返回false呢? IsInteger("3.")返回为trueIsNoIntNumber("3.")返回为false "^\\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 很麻烦啊,直接int.Paste("1234a"),如果成功就是正确的,出错就是错误的,很简单,其他的数据类型key同样处理。 pfworld(胡剑) 的判断整数也不行。 Sorry,pfworld(胡剑) 的判断整数已经OK。 1、校验整数的正则表达式,并从表达式中提取出数值^-?\d*$2、校验浮点数的正则表达式,可包含小数点或不包含小数点,并从表达式中提取出有效浮点数;^-?\d*(\.\d*)?$3、校验日期格式的正则表达式,可包含时分秒,并从表达式中提取出日期。这个比较麻烦 假期结束再告诉你 如果你等的到那时候的话 验证时间使用以下正则^((((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))( (0?\d|1\d|2[0-4]):(0?\d|[1-5]\d):(0?\d|[1-5]\d))$验证格式为2006 10 15 20:20:20或2006-10-15 20:20:20组1里为得到的日期 ^((((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))( (0?\d|1\d|2[0-4]):(0?\d|[1-5]\d):(0?\d|[1-5]\d))?$ @"-?\d+"@"-?\d+(\.\d+)?"以上两个正则在提取时 如果存在负数 和容易和时间混淆,楼长注意日期如果只是判断不建议使用正则,建议先提取类似格式然后用DateTime.Parse(try上)进行判断 winform中ListView 中,当鼠标移到么一项中,该项加边框?? SQL SERVER命令与数据字典工具 DataGridView中不的同显示方式 为什么我用C#调用activex控件总是报灾难性错误 Timer控件的Tick与Elapsed事件有什么区别? 记事本中的问题! C#网络编程,用TCP协议发送图片!~~~~~~ 线程中的InformStop函数 送分了 为什么C#的object.GetHashCode()返回int而不是long类型? 按钮不响应事件,是怎么回事?? 高分求教:结构体中如何初始化数组
/// 整数判断
/// </summary>
/// <param name="_s"></param>
/// <returns></returns>
public static bool IsInteger(string _s)
{
return Regex.IsMatch(_s,@"^[+-]{0,1}([1-7]?[0-8]?[0-9]{0,28}|[1-9][0-9]?|0)(\.0{0,28})$");
} /// <summary>
/// 非整数判断
/// </summary>
/// <param name="_s"></param>
/// <returns></returns>
public static bool IsNoIntNumber(string _s)
{
return Regex.IsMatch(_s,@"^[+-]{0,1}([1-7]?[0-8]?[0-9]{0,28}|[1-9][0-9]?|0)(|\.[0-9]{1,28})$");
} /// <summary>
/// 时间判断
/// </summary>
/// <param name="_s"></param>
/// <returns></returns>
public static bool IsTime(string _s)
{
string pattern = @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$";
return Regex.IsMatch(_s,pattern);
} /// <summary>
/// 日期判断
/// </summary>
/// <param name="_s"></param>
/// <returns></returns>
public static bool IsDate(string _s)
{
if (_s.Length < 8)
{
return false;
}
string pattern = @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
return Regex.IsMatch(_s,pattern);
} /// <summary>
/// 日期时间判断
/// </summary>
/// <param name="_s"></param>
/// <returns></returns>
public static bool IsDateTime(string _s)
{
if (_s.Length < 8)
{
return false;
}
string pattern = @"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
pattern += @"(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]{1}[0-9])))))$";
return Regex.IsMatch(_s,pattern);
}
IsNoIntNumber("3.")返回为false
"^\\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
pfworld(胡剑) 的判断整数已经OK。
^-?\d*$
2、校验浮点数的正则表达式,可包含小数点或不包含小数点,并从表达式中提取出有效浮点数;
^-?\d*(\.\d*)?$
3、校验日期格式的正则表达式,可包含时分秒,并从表达式中提取出日期。
这个比较麻烦 假期结束再告诉你 如果你等的到那时候的话
^((((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))( (0?\d|1\d|2[0-4]):(0?\d|[1-5]\d):(0?\d|[1-5]\d))$验证格式为2006 10 15 20:20:20或2006-10-15 20:20:20
组1里为得到的日期
@"-?\d+(\.\d+)?"
以上两个正则在提取时 如果存在负数 和容易和时间混淆,楼长注意
日期如果只是判断不建议使用正则,建议先提取类似格式
然后用DateTime.Parse(try上)进行判断