比较全的字符串验证类,有人顶的话以后继续发
生活随笔
收集整理的這篇文章主要介紹了
比较全的字符串验证类,有人顶的话以后继续发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
啥也不說看代碼哈~
Codeusing?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Text.RegularExpressions;
namespace?Utility
{
????public?class?ISExt
????{
????????private?static?ISExt?instance?=?null;
????????public?static?ISExt?GetInstance()
????????{
????????????if?(ISExt.instance?==?null)
????????????{
????????????????ISExt.instance?=?new?ISExt();
????????????}
????????????return?ISExt.instance;
????????}
????????private?ISExt()
????????{
????????}
????????///?<summary>
????????///?判斷是否為數字
????????///?</summary>
????????///?<param?name="oText">源字符串</param>
????????///?<returns>返回值?true?false</returns>
????????public?static?bool?IsNumberic(string?oText)
????????{
????????????try
????????????{
????????????????int?var1?=?Convert.ToInt32(oText);
????????????????return?true;
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????LogWriter.AddSystemException(ex);
????????????????return?false;
????????????}
????????}
????????///?<summary>
????????///?判斷輸入的字符串只包含漢字
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsChineseCh(string?input)
????????{
????????????Regex?regex?=?new?Regex("^[\u4e00-\u9fa5]+$");
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?匹配3位或4位區號的電話號碼,其中區號可以用小括號括起來,
????????///?也可以不用,區號與本地號間可以用連字號或空格間隔,
????????///?也可以沒有間隔
????????///?\(0\d{2}\)[-?]?\d{8}|0\d{2}[-?]?\d{8}|\(0\d{3}\)[-?]?\d{7}|0\d{3}[-?]?\d{7}
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsPhone(string?input)
????????{
????????????string?pattern?=?"^\\(0\\d{2}\\)[-?]?\\d{8}$|^0\\d{2}[-?]?\\d{8}$|^\\(0\\d{3}\\)[-?]?\\d{7}$|^0\\d{3}[-?]?\\d{7}$";
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????/**/
????????///?<summary>
????????///?轉半角的函數(DBC?case)
????????///?</summary>
????????///?<param?name="input">任意字符串</param>
????????///?<returns>半角字符串</returns>
????????///<remarks>
????????///全角空格為12288,半角空格為32
????????///其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248
????????///</remarks>
????????public?static?string?ToDBC(string?input)
????????{
????????????char[]?c?=?input.ToCharArray();
????????????for?(int?i?=?0;?i?<?c.Length;?i++)
????????????{
????????????????if?(c[i]?==?12288)
????????????????{
????????????????????c[i]?=?(char)32;
????????????????????continue;
????????????????}
????????????????if?(c[i]?>?65280?&&?c[i]?<?65375)
????????????????????c[i]?=?(char)(c[i]?-?65248);
????????????}
????????????return?new?string(c);
????????}
????????///?<summary>
????????///?轉全角的函數(SBC?case)
????????///?</summary>
????????///?<param?name="input">任意字符串</param>
????????///?<returns>全角字符串</returns>
????????///<remarks>
????????///全角空格為12288,半角空格為32
????????///其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248
????????///</remarks>????????
????????public?static?string?ToSBC(string?input)
????????{
????????????//半角轉全角:
????????????char[]?c?=?input.ToCharArray();
????????????for?(int?i?=?0;?i?<?c.Length;?i++)
????????????{
????????????????if?(c[i]?==?32)
????????????????{
????????????????????c[i]?=?(char)12288;
????????????????????continue;
????????????????}
????????????????if?(c[i]?<?127)
????????????????????c[i]?=?(char)(c[i]?+?65248);
????????????}
????????????return?new?string(c);
????????}
????????///?<summary>
????????///?判斷是否為小于9位的數字?內線電話
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsInterphone(string?input)
????????{
????????????if?(!IsDBC(input))
????????????{
????????????????return?false;
????????????}
????????????//input?=?ToDBC(input);
????????????if?(input.Length?<?9)
????????????{
????????????????string?pattern?=?"^-?\\d+$|^(-?\\d+)(\\.\\d+)?$";
????????????????Regex?regex?=?new?Regex(pattern);
????????????????return?regex.IsMatch(input);
????????????}
????????????else
????????????{
????????????????return?false;
????????????}
????????}
????????///?<summary>
????????///?判斷是否是全角
????????///?</summary>
????????///?<param?name="input">字符串</param>
????????///?<returns></returns>
????????public?static?bool?IsSBC(string?input)
????????{
????????????if?(2?*?input.Length?==?Encoding.Default.GetByteCount(input))
????????????{
????????????????return?true;
????????????}
????????????else
????????????{
????????????????return?false;
????????????}
????????}
????????///?<summary>
????????///?判斷是否是半角
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsDBC(string?input)
????????{
????????????if?(input.Length?==?Encoding.Default.GetByteCount(input))
????????????{
????????????????return?true;
????????????}
????????????else
????????????{
????????????????return?false;
????????????}
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否是一個合法的手機號
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsMobilePhone(string?input)
????????{
????????????Regex?regex?=?new?Regex("^13\\d{9}$");
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串只包含數字
????????///?可以匹配整數和浮點數
????????///?^-?\d+$|^(-?\d+)(\.\d+)?$
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsNumber(string?input)
????????{
????????????string?pattern?=?"^-?\\d+$|^(-?\\d+)(\\.\\d+)?$";
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?匹配非負整數
????????///
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsNotNagtive(string?input)
????????{
????????????Regex?regex?=?new?Regex(@"^\d+$");
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?匹配正整數
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsUint(string?input)
????????{
????????????Regex?regex?=?new?Regex("^[0-9]*[1-9][0-9]*$");
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串字包含英文字母
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsEnglisCh(string?input)
????????{
????????????Regex?regex?=?new?Regex("^[A-Za-z]+$");
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否是一個合法的Email地址
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsEmail(string?input)
????????{
????????????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})(\]?)$";
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否只包含數字和英文字母
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsNumAndEnCh(string?input)
????????{
????????????string?pattern?=?@"^[A-Za-z0-9]+$";
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否是一個超鏈接
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsURL(string?input)
????????{
????????????//string?pattern?=?@"http://([\w-]+\.)+[\w-]+(/[\w-?./?%&=]*)?";
????????????string?pattern?=?@"^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$";
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否是表示一個IP地址
????????///?</summary>
????????///?<param?name="input">被比較的字符串</param>
????????///?<returns>是IP地址則為True</returns>
????????public?static?bool?IsIPv4(string?input)
????????{
????????????string[]?IPs?=?input.Split('.');
????????????Regex?regex?=?new?Regex(@"^\d+$");
????????????for?(int?i?=?0;?i?<?IPs.Length;?i++)
????????????{
????????????????if?(!regex.IsMatch(IPs[i]))
????????????????{
????????????????????return?false;
????????????????}
????????????????if?(Convert.ToUInt16(IPs[i])?>?255)
????????????????{
????????????????????return?false;
????????????????}
????????????}
????????????return?true;
????????}
????????///?<summary>
????????///?計算字符串的字符長度,一個漢字字符將被計算為兩個字符
????????///?</summary>
????????///?<param?name="input">需要計算的字符串</param>
????????///?<returns>返回字符串的長度</returns>
????????public?static?int?GetCount(string?input)
????????{
????????????return?Regex.Replace(input,?@"[\u4e00-\u9fa5/g]",?"aa").Length;
????????}
????????///?<summary>
????????///?調用Regex中IsMatch函數實現一般的正則表達式匹配
????????///?</summary>
????????///?<param?name="pattern">要匹配的正則表達式模式。</param>
????????///?<param?name="input">要搜索匹配項的字符串</param>
????????///?<returns>如果正則表達式找到匹配項,則為?true;否則,為?false。</returns>
????????public?static?bool?IsMatch(string?pattern,?string?input)
????????{
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.IsMatch(input);
????????}
????????///?<summary>
????????///?從輸入字符串中的第一個字符開始,用替換字符串替換指定的正則表達式模式的所有匹配項。
????????///?</summary>
????????///?<param?name="pattern">模式字符串</param>
????????///?<param?name="input">輸入字符串</param>
????????///?<param?name="replacement">用于替換的字符串</param>
????????///?<returns>返回被替換后的結果</returns>
????????public?static?string?Replace(string?pattern,?string?input,?string?replacement)
????????{
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.Replace(input,?replacement);
????????}
????????///?<summary>
????????///?在由正則表達式模式定義的位置拆分輸入字符串。
????????///?</summary>
????????///?<param?name="pattern">模式字符串</param>
????????///?<param?name="input">輸入字符串</param>
????????///?<returns></returns>
????????public?static?string[]?Split(string?pattern,?string?input)
????????{
????????????Regex?regex?=?new?Regex(pattern);
????????????return?regex.Split(input);
????????}
????????///?<summary>
????????///?判斷輸入的字符串是否是合法的IPV6?地址
????????///?</summary>
????????///?<param?name="input"></param>
????????///?<returns></returns>
????????public?static?bool?IsIPV6(string?input)
????????{
????????????string?pattern?=?"";
????????????string?temp?=?input;
????????????string[]?strs?=?temp.Split(':');
????????????if?(strs.Length?>?8)
????????????{
????????????????return?false;
????????????}
????????????int?count?=?ISExt.GetStringCount(input,?"::");
????????????if?(count?>?1)
????????????{
????????????????return?false;
????????????}
????????????else?if?(count?==?0)
????????????{
????????????????pattern?=?@"^([\da-f]{1,4}:){7}[\da-f]{1,4}$";
????????????????Regex?regex?=?new?Regex(pattern);
????????????????return?regex.IsMatch(input);
????????????}
????????????else
????????????{
????????????????pattern?=?@"^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$";
????????????????Regex?regex1?=?new?Regex(pattern);
????????????????return?regex1.IsMatch(input);
????????????}
????????}
????????/*?*******************************************************************
????????*?1、通過“:”來分割字符串看得到的字符串數組長度是否小于等于8
????????*?2、判斷輸入的IPV6字符串中是否有“::”。
????????*?3、如果沒有“::”采用?^([\da-f]{1,4}:){7}[\da-f]{1,4}$?來判斷
????????*?4、如果有“::”?,判斷"::"是否止出現一次
????????*?5、如果出現一次以上?返回false
????????*?6、^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$
????????*?******************************************************************/
????????///?<summary>
????????///?判斷字符串compare?在?input字符串中出現的次數
????????///?</summary>
????????///?<param?name="input">源字符串</param>
????????///?<param?name="compare">用于比較的字符串</param>
????????///?<returns>字符串compare?在?input字符串中出現的次數</returns>
????????private?static?int?GetStringCount(string?input,?string?compare)
????????{
????????????int?index?=?input.IndexOf(compare);
????????????if?(index?!=?-1)
????????????{
????????????????return?1?+?GetStringCount(input.Substring(index?+?compare.Length),?compare);
????????????}
????????????else
????????????{
????????????????return?0;
????????????}
????????}
????}
}
轉載于:https://www.cnblogs.com/xunyuetian/archive/2009/03/18/1415553.html
總結
以上是生活随笔為你收集整理的比较全的字符串验证类,有人顶的话以后继续发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移植发际线价格需要多少才能搞定呢
- 下一篇: 使用SDL打造游戏世界之入门篇 - 1