首页> 搜索结果页
"IsValidEmail" 检索
共 9 条结果
简单正则表达式验证Email地址是否正确
private bool IsValidEmail(string strIn)        {            return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");         } 本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/articles/1532590.html,如需转载请自行联系原作者
文章
2017-11-26
2、Android构建本地单元测试
如果你的单元测试在Android中没有依赖或者只有简单的以来,你可以在你的本地开发环境中运行你的测试。这种测试比较高效因为它能让你避免将整个app安装到物理设备或虚拟机中执行单元测试。最后,执行单元测试的时间大量减少。你可以通过模拟框架,比如Mockito来模拟依赖关系。 配置你的测试环境 前文已经叙述。 创建一个本地单元类 你的本地测试单元类风格类似Junit 4测试类。Junit是Java最流行应用最广泛的单元测试类。最新的版本,Junit 4,允许你用比之前版本更简洁和灵活的方式编写测试。跟之前的版本不同,在Junit 4中,你不需要扩展junit.framework.TestCase类了。你也不需要在每个测试方法前加前缀test或者使用在junit.framework 或 junit.extensions中的包。 创建一个基本的Junit 4 测试类,你可以创建一个包含一个或多个测试方法的Java类。每个测试方法都用@Test 标注。如下: import org.junit.Test; import java.util.regex.Pattern; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class EmailValidatorTest { @Test public void emailValidator_CorrectEmailSimple_ReturnsTrue() { assertThat(EmailValidator.isValidEmail("name@email.com"), is(true)); } } 为了测试你的APP组件返回期望的记过,使用Assert方法来执行检查。 模拟Android 依赖 默认情况下,Gradle的安卓插件依靠一个经过修改的android.jar的库,不包含任何真正的代码,调用的任何的Android的类都被视为异常。 你可以使用一个模拟框架来排除你代码中额外的依赖,让你的组件通过期望的方式与依赖交互。 添加一个虚拟对象到你的本地单元测试,跟随如下几步: 1、 将Mockito依赖添加到build.gradle文件中 2、 在你的测试类前添加@RunWith(MockitoJUnitRunner.class)注解。 3、 创建一个mock对象,用@Mock注解 import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.CoreMatchers.*; import static org.mockito.Mockito.*; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import android.content.SharedPreferences; @RunWith(MockitoJUnitRunner.class) public class UnitTestSample { private static final String FAKE_STRING = "HELLO WORLD"; @Mock Context mMockContext; @Test public void readStringFromContext_LocalizedString() { when(mMockContext.getString(R.string.hello_word)) .thenReturn(FAKE_STRING); ClassUnderTest myObjectUnderTest = new ClassUnderTest(mMockContext); String result = myObjectUnderTest.getHelloWorldString(); assertThat(result, is(FAKE_STRING)); } } 本文作者:宋志辉 个人微博:点击进入
文章
测试技术 · Android开发 · Java
2016-06-14
简单C# 验证类
using System; using System.Text.RegularExpressions; namespace bobomousecom.crm { /// <summary> /// Regexlib 的摘要说明。 /// </summary> public class Regexlib { public Regexlib() { // // TODO: 在此处添加构造函数逻辑 // } //搜索输入字符串并返回所有 href=“...”值 string DumpHrefs(String inputString) { Regex r; Match m; r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))", RegexOptions.IgnoreCase|RegexOptions.Compiled); for (m = r.Match(inputString); m.Success; m = m.NextMatch()) { return("Found href " + m.Groups[1]); } } //验证Email地址 bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } //dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。 string MDYToDMY(String input) { return Regex.Replace(input,"\\b(?\\d{1,2})/(?\\d{1,2})/(?\\d{2,4})\\b","${day}-${month}-${year}"); } //验证是否为小数 bool IsValidDecimal(string strIn) { return Regex.IsMatch(strIn,@"[0].\d{1,2}|[1]"); } //验证是否为电话号码 bool IsValidTel(string strIn) { return Regex.IsMatch(strIn,@"(\d+-)?(\d{4}-?\d{7}|\d{3}-?\d{8}|^\d{7,8})(-\d+)?"); } //验证年月日 bool IsValidDate(string strIn) { return Regex.IsMatch(strIn,@"^2\d{3}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|[1-2]\d|3[0-1])(?:0?[1-9]|1\d|2[0-3]):(?:0?[1-9]|[1-5]\d):(?:0?[1-9]|[1-5]\d)$"); } //验证后缀名 bool IsValidPostfix(string strIn) { return Regex.IsMatch(strIn,@"\.(?i:gif|jpg)$"); } //验证字符是否在4至12之间 bool IsValidByte(string strIn) { return Regex.IsMatch(strIn,@"^[a-z]{4,12}$"); } //验证IP bool IsValidIp(string strIn) { return Regex.IsMatch(strIn,@"^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"); } } }  
文章
C#
2013-09-13
第二十三章:触发器和行为(八)
具有属性的行为Behavior 类派生自Behavior类,该类派生自BindableObject。这表明您的Behavior 派生可以定义自己的可绑定属性。之前你看过一些Action 衍生产品,比如ScaleAction和ShiverAction,它们定义了一些属性以赋予它们更大的灵活性。但是Behavior 派生可以定义可绑定属性,可以作为数据绑定的源属性。这意味着您不必对行为进行硬编码以修改特定属性,例如将Entry的TextColor属性设置为Red。您可以稍后决定希望行为如何影响用户界面,并在XAML文件中实现该权限。这为行为提供了更大的灵活性,并允许XAML在与用户界面相关的行为方面发挥更大的作用。这是一个名为ValidEmailBehavior的Xamarin.FormsBook.Toolkit库中的类,它与NumericValidationBehavior类似,只是它使用正则表达式来确定Entry的Text属性是否是有效的电子邮件地址: amespace Xamarin.FormsBook.Toolkit { public class ValidEmailBehavior : Behavior<Entry> { static readonly BindablePropertyKey IsValidPropertyKey = BindableProperty.CreateReadOnly("IsValid", typeof(bool), typeof(ValidEmailBehavior), false); public static readonly BindableProperty IsValidProperty = IsValidPropertyKey.BindableProperty; public bool IsValid { private set { SetValue(IsValidPropertyKey, value); } get { return (bool)GetValue(IsValidProperty); } } protected override void OnAttachedTo(Entry entry) { entry.TextChanged += OnEntryTextChanged; base.OnAttachedTo(entry); } protected override void OnDetachingFrom(Entry entry) { entry.TextChanged -= OnEntryTextChanged; base.OnDetachingFrom(entry); } void OnEntryTextChanged(object sender, TextChangedEventArgs args) { Entry entry = (Entry)sender; IsValid = IsValidEmail(entry.Text); } bool IsValidEmail(string strIn) { if (String.IsNullOrEmpty(strIn)) return false; try { // from https://msdn.microsoft.com/en-us/library/01escwtf(v=vs.110).aspx return Regex.IsMatch(strIn, @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|" + @"[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)" + @"(?<=[0-9a-z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|" + @"(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$", RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250)); } catch (RegexMatchTimeoutException) { return false; } } } } ValidEmailBehavior不是将Entry的Text属性设置为Red,而是定义由可绑定属性支持的IsValid属性。因为此类外部的代码设置IsValid属性没有意义,所以它是只读的可绑定属性。 Bindable.CreateReadOnly调用创建一个私有的可绑定属性密钥,该密钥由IsValid的私有集访问器中的SetValue调用使用。像往常一样,GetValue调用引用公共IsValidProperty可绑定属性。您如何使用该IsValid属性完全取决于您。例如,EmailValidationDemo程序将IsValid属性绑定到显示“拇指向上”图片的图像的IsVisible属性。 “拇指向上”位图位于另一个带有“拇指向下”的Image元素的顶部,以指示何时键入了有效的电子邮件地址。 IsValid属性也绑定到“发送”按钮的IsEnabled属性。请注意,两个数据绑定的Source都是ValidEmailBehavior对象: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:EmailValidationDemo" xmlns:toolkit= "clr-namespace:Xamarin.FormsBook.Toolkit;assembly=Xamarin.FormsBook.Toolkit" x:Class="EmailValidationDemo.EmailValidationDemoPage" Padding="20, 50"> <StackLayout> <StackLayout Orientation="Horizontal"> <Entry Placeholder="Enter email address" Keyboard="Email" HorizontalOptions="FillAndExpand"> <Entry.Behaviors> <toolkit:ValidEmailBehavior x:Name="validEmail" /> </Entry.Behaviors> </Entry> <Grid HeightRequest="40"> <Image Source= "{local:ImageResource EmailValidationDemo.Images.ThumbsDown.png}" /> <Image Source="{local:ImageResource EmailValidationDemo.Images.ThumbsUp.png}" IsVisible="{Binding Source={x:Reference validEmail}, Path=IsValid}"/> </Grid> </StackLayout> <Button Text="Send!" FontSize="Large" HorizontalOptions="Center" IsEnabled="{Binding Source={x:Reference validEmail}, Path=IsValid}" /> </StackLayout> </ContentPage> 在您输入电子邮件地址时,只有至少有两个字符的顶级域名才会被视为有效:这两个位图是常见EmailValidationDemo项目的一部分。 用于引用位图的ImageResource标记扩展类在第13章“位图”中讨论过,它必须是包含位图的同一程序集的一部分: namespace EmailValidationDemo { [ContentProperty ("Source")] public class ImageResourceExtension : IMarkupExtension { public string Source { get; set; } public object ProvideValue (IServiceProvider serviceProvider) { if (Source == null) return null; return ImageSource.FromResource(Source); } } } 如果您在同一页面上有多个需要检查有效电子邮件地址的条目视图,该怎么办? 你可以在Style的Behaviors集合中包含ValidEmailBehavior类吗?你不能。 ValidEmailBehavior类定义名为IsValid的属性。 这意味着ValidEmailBehavior的特定实例始终具有特定状态,即此属性的值。 这具有重要意义:维护状态(例如字段或属性)的行为无法共享,这意味着它不应包含在样式中。如果需要在同一页面上对多个Entry视图使用ValidEmailBehavior,请不要将其放在样式中。 将单独的实例添加到每个Entry视图的Behaviors集合中。但是,这种IsValid属性的优点胜过缺点,因为您可以通过各种方式使用该属性。 这是一个名为EmailValidationConverter的程序,它使用IsValid属性和Xamarin.FormsBook.Toolkit库中已有的绑定转换器来在两个文本字符串之间进行选择: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:toolkit= "clr-namespace:Xamarin.FormsBook.Toolkit;assembly=Xamarin.FormsBook.Toolkit" x:Class="EmailValidationConverter.EmailValidationConverterPage" Padding="50"> <StackLayout> <StackLayout Orientation="Horizontal"> <Entry Placeholder="Enter email address" HorizontalOptions="FillAndExpand"> <Entry.Behaviors> <toolkit:ValidEmailBehavior x:Name="validEmail" /> </Entry.Behaviors> </Entry> <Label HorizontalTextAlignment="Center" VerticalTextAlignment="Center"> <Label.Text> <Binding Source="{x:Reference validEmail}" Path="IsValid"> <Binding.Converter> <toolkit:BoolToObjectConverter x:TypeArguments="x:String" FalseObject="Not yet!" TrueObject="OK!" /> </Binding.Converter> </Binding> </Label.Text> </Label> </StackLayout> <Button Text="Send!" FontSize="Large" HorizontalOptions="Center" IsEnabled="{Binding Source={x:Reference validEmail}, Path=IsValid}" /> </StackLayout> </ContentPage> BoolToObjectConverter在两个文本字符串“Not yet!”和“OK!”之间进行选择。但是,正如EmailValidationTrigger程序演示的那样,使用DataTrigger可以通过更直接的逻辑和无绑定转换器来执行相同的操作。 “Not yet!”文本被分配给Label的Text属性,而Label上的DataTrigger包含对IsValid属性的绑定以设置“OK!”文本: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:toolkit= "clr-namespace:Xamarin.FormsBook.Toolkit;assembly=Xamarin.FormsBook.Toolkit" x:Class="EmailValidationTrigger.EmailValidationTriggerPage" Padding="50"> <StackLayout> <StackLayout Orientation="Horizontal"> <Entry Placeholder="Enter email address" HorizontalOptions="FillAndExpand"> <Entry.Behaviors> <toolkit:ValidEmailBehavior x:Name="validEmail" /> </Entry.Behaviors> </Entry> <Label Text="Not yet!" HorizontalTextAlignment="Center" VerticalTextAlignment="Center"> <Label.Triggers> <DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference validEmail}, Path=IsValid}" Value="True"> <Setter Property="Text" Value="OK!" /> </DataTrigger> </Label.Triggers> </Label> </StackLayout> <Button Text="Send!" FontSize="Large" HorizontalOptions="Center" IsEnabled="{Binding Source={x:Reference validEmail}, Path=IsValid}" /> </StackLayout> </ContentPage> 引用DataTrigger中数据绑定的行为是一种强大的技术。
文章
Android开发
2019-04-08
[转帖]C#如何使用正则表达式来校验字段串输入的系列函数
C#如何使用正则表达式来校验字段串输入的系列函数 #region 输入字段串校验系列函数  /// <summary>  ///获得字符串长度   /// </summary>  /// <param name="str"></param>  /// <returns></returns>  public static int GetStrLength(string str)  {   byte[] sarr = System.Text.Encoding.Default.GetBytes(str);   return sarr.Length;  }   /// <summary>  ///返回指定长度字符串。   /// </summary>  /// <param name="str">字符串</param>  /// <param name="len">长度</param>  /// <returns>指定长度字符串</returns>  /// <remarks>  /// 在文本编辑框(TextBox控件)中,一个中文汉字和一个英文字母一样都是占一位字节,  /// 但是在SQL Server数据库中,存储一个中文汉字是占用两位字节,这样就可能会导致  /// 在保存文本编辑框的内容时字节被截断,保存出错。所以就需要返回指定长度的当前 ANSI 代码页的编码字符。  /// <code>  /// string strTmp = txtMemo.Text;  /// strTmp=SinoSofts.Common.PublicClass.GetStrEncoding(strTmp,txtMemo.MaxLength);  /// txtMemo.Text=strTmp;  /// </code>  /// </remarks>  public static string GetStrEncoding(string str,int len)  {   byte[] sarr = System.Text.Encoding.Default.GetBytes(str);   if(sarr.Length>len && len>0)    return System.Text.Encoding.Default.GetString(sarr,0,len);   else    return str;  }    /// <summary>  /// //判断身份证  /// </summary>  /// <param name="Cert"></param>  /// <returns></returns>  public static bool IsValidCert(string Cert)  {   return Regex.IsMatch(Cert, @"^(\d{15}|\d{17}[\dx])$");   }   //判断邮件  /*public static bool IsValidEmail(string email)  {   return Regex.IsMatch(email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");   }*/    /// <summary>  ///判断用户名  /// </summary>  /// <param name="UserName"></param>  /// <returns></returns>  public static bool IsValidUserName(string UserName)  {    return Regex.IsMatch(UserName, @"^([a-z]|[A-Z]){1}\w{0,27}$");   }     /// <summary>  ///判断英文名   /// </summary>  /// <param name="EnPersonName"></param>  /// <returns></returns>  public static bool IsValidEnPersonName(string EnPersonName)  {   return Regex.IsMatch(EnPersonName, @"^[a-zA-Z]{1,30}$");   }   /// <summary>  /// 判断密码  /// </summary>  /// <param name="PassWord"></param>  /// <returns></returns>  public static bool IsValidPassWord(string PassWord)  {   return Regex.IsMatch(PassWord, @"^(\w){6,20}$");   }   /// <summary>  /// 判断电话/传真  /// </summary>  /// <param name="Tel"></param>  /// <returns></returns>  public static bool IsValidTel(string Tel)  {   return Regex.IsMatch(Tel, @"^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$");   }   /// <summary>  /// 判断手机  /// </summary>  /// <param name="Mobil"></param>  /// <returns></returns>  public static bool IsValidMobil(string Mobil)  {   return Regex.IsMatch(Mobil, @"^(\d)+[-]?(\d){6,12}$");   }   /// <summary>  /// 邮政编码  /// </summary>  /// <param name="Zip"></param>  /// <returns></returns>  public static bool IsValidZip(string Zip)  {   return Regex.IsMatch(Zip, @"^[a-z0-9 ]{3,12}$");   }   /// <summary>  /// 判断日期  /// </summary>  /// <param name="Date"></param>  /// <returns></returns>  public static bool IsValidDate(string Date)  {   bool bValid=Regex.IsMatch(Date, @"^[12]{1}(\d){3}[-][01]?(\d){1}[-][0123]?(\d){1}$");    return (bValid && Date.CompareTo("1753-01-01")>=0);   }    //判断整型  /*public static bool IsValidInt(string Int)  {   return Regex.IsMatch(Int, @"^[1-9]{1}[0-9]{0,6}$");   }*/   /// <summary>  /// 判断只能输字母  /// </summary>  /// <param name="EnName"></param>  /// <returns></returns>  public static bool IsValidEnName(string EnName)  {   return Regex.IsMatch(EnName, @"[a-zA-Z]");   }  #endregion  
文章
C# · 数据安全/隐私保护 · 存储 · 数据库 · SQL
2006-08-13
浅谈在ASP.NET中数据有效性校验的方法
作为一名程序员,一定要对自己编写的程序的健壮性负责,因此数据的校验无论在商业逻辑还是系统实现都是必不可少的部分。 我这里总结了一种自认为比较不错的asp.net(C#)的数据校验方法,如大家探讨。 主要用Regex的IsMatch方法,在BusinessRule层进行校验数据的有效性,并将校验的方法作为BusinessRule层基类的一部分。 在WebUI层现实提示信息。 usingSystem;usingSystem.Data;usingSystem.Text.RegularExpressions;namespaceEducation.BusinessRules{///<summary>///商业规则层的基类///</summary>publicclassBizObject{publicconstStringREGEXP_IS_VALID_EMAIL=@"^/w+((-/w+)|(/./w+))*/@/w+((/.|-)/w+)*/./w+$";//电子邮件校验常量publicconstStringREGEXP_IS_VALID_URL=@"^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?";//网址校验常量publicconstStringREGEXP_IS_VALID_ZIP=@"/d{6}";//邮编校验常量publicconstStringREGEXP_IS_VALID_SSN=@"/d{18}|/d{15}";//身份证校验常量publicconstStringREGEXP_IS_VALID_INT=@"^/d{1,}$";//整数校验常量publicconstStringREGEXP_IS_VALID_DEMICAL=@"^-?(0|/d+)(/./d+)?$";//数值校验常量"//日期校验常量publicconstStringREGEXP_IS_VALID_DATE=@"^(?:(?:(?:(?:1[6-9]|[2-9]/d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(//|-|/.)(?:0?2/1(?:29))$)|(?:(?:1[6-9]|[2-9]/d)?/d{2})(//|-|/.)(?:(?:(?:0?[13578]|1[02])/2(?:31))|(?:(?:0?[1,3-9]|1[0-2])/2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))/2(?:0?[1-9]|1/d|2[0-8]))$"; publicBizObject(){} #region校验字段是否为空或字段长度超长方法 publicstringGetFieldTooLongError(stringErrorField,intmaxlen){returnErrorField+"信息超长,请删减至"+maxlen.ToString()+"个字符!";} publicstringGetFieldNullError(stringErrorField){returnErrorField+"是必填项,不允许为空!";} publicboolIsValidField(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); if(i<1&&(!AllowNull)){Row.SetColumnError(fieldName,GetFieldNullError(ErrorField));returnfalse;}elseif(i>maxLen){Row.SetColumnError(fieldName,GetFieldTooLongError(ErrorField,maxLen));returnfalse;}returntrue;}#endregion #region校验电子邮件类型字段格式方法 publicstringGetEmailFieldError(stringErrorField){returnErrorField+"格式不正确(a@b.c)!";}publicboolIsValidEmail(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=IsValidField(Row,fieldName,maxLen,ErrorField,AllowNull); if(isValid){isValid=(newRegex(REGEXP_IS_VALID_EMAIL)).IsMatch(Row[fieldName].ToString()); if((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetEmailFieldError(ErrorField));returnfalse;}}returntrue;}#endregion #region校验邮编类型字段格式方法 publicstringGetZipFieldError(stringErrorField){returnErrorField+"格式不正确(157032)!";}publicboolIsValidZip(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=IsValidField(Row,fieldName,maxLen,ErrorField,AllowNull); if(isValid){isValid=(newRegex(REGEXP_IS_VALID_ZIP)).IsMatch(Row[fieldName].ToString()); if((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetZipFieldError(ErrorField));returnfalse;}}returntrue;}#endregion #region校验身份证类型字段格式方法 publicstringGetSSNFieldError(stringErrorField){returnErrorField+"格式不正确(长度为15或18位)!";}publicboolIsValidSSN(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=IsValidField(Row,fieldName,maxLen,ErrorField,AllowNull); if(isValid){isValid=(newRegex(REGEXP_IS_VALID_SSN)).IsMatch(Row[fieldName].ToString()); if((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetSSNFieldError(ErrorField));returnfalse;}}returntrue;}#endregion #region校验网址类型字段格式方法 publicstringGetUrlFieldError(stringErrorField){returnErrorField+"格式不正确(}publicboolIsValidUrl(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=IsValidField(Row,fieldName,maxLen,ErrorField,AllowNull); if(isValid){isValid=(newRegex(REGEXP_IS_VALID_URL)).IsMatch(Row[fieldName].ToString()); if((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetUrlFieldError(ErrorField));returnfalse;}}returntrue;}#endregion #region校验日期类型字段格式方法 publicstringGetDateFieldError(stringErrorField){returnErrorField+"日期格式不正确!";}publicboolIsValidDate(DataRowRow,StringfieldName,intmaxLen,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=IsValidField(Row,fieldName,maxLen,ErrorField,AllowNull); if(isValid){isValid=(newRegex(REGEXP_IS_VALID_DATE)).IsMatch(Row[fieldName].ToString()); if((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetDateFieldError(ErrorField));returnfalse;}}returntrue;}#endregion #region校验数值类型字段格式方法//这也是个判断数值的办法privateboolIsNumeric(stringValue){try{inti=int.Parse(Value);returntrue;}catch{returnfalse;}} publicstringGetFieldNumberError(stringErrorField){returnErrorField+"必须是数字(例如:90)!";} publicboolIsValidNumber(DataRowRow,StringfieldName,stringErrorField,boolAllowNull){inti=(short)(Row[fieldName].ToString().Trim().Length); boolisValid=(newRegex(REGEXP_IS_VALID_DEMICAL)).IsMatch(Row[fieldName].ToString()); if(i<1&&(!AllowNull)){Row.SetColumnError(fieldName,GetFieldNullError(ErrorField));returnfalse;}elseif((!isValid)&&(i>0)){Row.SetColumnError(fieldName,GetFieldNumberError(ErrorField));returnfalse;}returntrue;}#endregion }} //在继承了基类的BusinessRule中使用校验的方法///<summary>///使用上面的方法对数据进行有效性校验///</summary>///<paramname="Row">数据行</param>///<returns>通过--true不通过--false</returns>publicboolValidate(DataRowRow){boolisValid;Row.ClearErrors();isValid=IsValidField(Row,"name",20,"姓名",false);isValid&=IsValidZip(Row,"zip",6,"邮编",true);isValid&=IsValidNumber(Row,"age","年龄",false);isValid&=IsValidEmail(Row,"email",50,"电子邮件",true);returnisValid;} //在WebUI中显示错误提示信息///<summary>///显示提交数据返回的错误信息///</summary>privatevoidDisplayErrors(){StringfieldErrors="";StringtmpfieldErrors=""; DataRowRow=ds.Tables[0].Rows[0]; foreach(DataColumnColumninds.Tables[0].Columns){tmpfieldErrors=Row.GetColumnError(Column.ColumnName.ToString());if(tmpfieldErrors!=""){fieldErrors+="<li>"+tmpfieldErrors+"<br>";}}//显示错误信息this.lblError.Text=fieldErrors;} ="MAILTO:A@B.C">
文章
.NET
2008-09-14
Java正则表达式
 正则表达式通常处理方式: Pattern p = Pattern.compile("a*b");          Matcher m = p.matcher("aaaaab");          boolean b = m.matches();   或者:System.out.println("abc".matches("..."));//String类中有match()方法 正则表达式规则如下,更多请参考java的Pattern类的详细介绍。 构造 匹配       字符   x 字符 x   \\ 反斜线字符   \0n 带有八进制值 0 的字符 n (0 <= n <= 7)   \0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)   \0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)   \xhh 带有十六进制值 0x 的字符 hh   \uhhhh 带有十六进制值 0x 的字符 hhhh   \t 制表符 ('\u0009')   \n 新行(换行)符 ('\u000A')   \r 回车符 ('\u000D')   \f 换页符 ('\u000C')   \a 报警 (bell) 符 ('\u0007')   \e 转义符 ('\u001B')   \cx 对应于 x 的控制符       字符类   [abc] a、b 或 c(简单类) 【注意】非"abc",而是"[abc]" [^abc] 任何字符,除了 a、b 或 c(否定)   [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)   [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)   [a-z&&[def]] d、e 或 f(交集)   [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)   [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)       预定义字符类   . 任何字符(与行结束符可能匹配也可能不匹配)   \d 数字:[0-9]   \D 非数字: [^0-9]   \s 空白字符:[ \t\n\x0B\f\r]   \S 非空白字符:[^\s]   \w 单词字符:[a-zA-Z_0-9]   \W 非单词字符:[^\w]       POSIX 字符类(仅 US-ASCII)   \p{Lower} 小写字母字符:[a-z]   \p{Upper} 大写字母字符:[A-Z]   \p{ASCII} 所有 ASCII:[\x00-\x7F]   \p{Alpha} 字母字符:[\p{Lower}\p{Upper}]   \p{Digit} 十进制数字:[0-9]   \p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]   \p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~   \p{Graph} 可见字符:[\p{Alnum}\p{Punct}]   \p{Print} 可打印字符:[\p{Graph}\x20]   \p{Blank} 空格或制表符:[ \t]   \p{Cntrl} 控制字符:[\x00-\x1F\x7F]   \p{XDigit} 十六进制数字:[0-9a-fA-F]   \p{Space} 空白字符:[ \t\n\x0B\f\r]       java.lang.Character 类(简单的 java 字符类型)   \p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()   \p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()   \p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()   \p{javaMirrored} 等效于 java.lang.Character.isMirrored()       Unicode 块和类别的类   \p{InGreek} Greek 块(简单块)中的字符   \p{Lu} 大写字母(简单类别)   \p{Sc} 货币符号   \P{InGreek} 所有字符,Greek 块中的除外(否定)   [\p{L}&&[^\p{Lu}]]  所有字母,大写字母除外(减去)       边界匹配器   ^ 行的开头   $ 行的结尾   \b 单词边界   \B 非单词边界   \A 输入的开头   \G 上一个匹配的结尾   \Z 输入的结尾,仅用于最后的结束符(如果有的话)   \z 输入的结尾       Greedy 数量词   X? X,一次或一次也没有   X* X,零次或多次   X+ X,一次或多次   X{n} X,恰好 n 次   X{n,} X,至少 n 次   X{n,m} X,至少 n 次,但是不超过 m 次       Reluctant 数量词   X?? X,一次或一次也没有   X*? X,零次或多次   X+? X,一次或多次   X{n}? X,恰好 n 次   X{n,}? X,至少 n 次   X{n,m}? X,至少 n 次,但是不超过 m 次       Possessive 数量词   X?+ X,一次或一次也没有   X*+ X,零次或多次   X++ X,一次或多次   X{n}+ X,恰好 n 次   X{n,}+ X,至少 n 次   X{n,m}+ X,至少 n 次,但是不超过 m 次       Logical 运算符   XY X 后跟 Y   X|Y X 或 Y   (X) X,作为捕获组       Back 引用   \n 任何匹配的 nth 捕获组       引用   \ Nothing,但是引用以下字符   \Q Nothing,但是引用所有字符,直到 \E   \E Nothing,但是结束从 \Q 开始的引用       特殊构造(非捕获)   (?:X) X,作为非捕获组   (?idmsux-idmsux)  Nothing,但是将匹配标志i d m s u x on - off   (?idmsux-idmsux:X)   X,作为带有给定标志 i d m s u x on - off   的非捕获组  (?=X) X,通过零宽度的正 lookahead   (?!X) X,通过零宽度的负 lookahead   (?<=X) X,通过零宽度的正 lookbehind   (?<!X) X,通过零宽度的负 lookbehind   (?>X) X,作为独立的非捕获组    场景1:将所有数字用'-'替换 String s = "abc123def456hijas2kj23jl1";      String dest = s.replaceAll("\\d", "-");      System.out.println(dest);   场景2:判断是否是电子邮箱 String s = "tianya@sina.com";          System.out.println(s.matches(".+@.+\\..+"));  【注】\\.代表'.',表示真正的‘点’号,否则会代表‘任意字符’  场景3: 邮箱验证: String regEmail = "^(?:\\w+\\.{1})*\\w+@(\\w+\\.)*\\w+$";  ip 地址的验证: String reIp = "\\b((\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])(\\b|\\.)){4}";   验证日期: String reDate = "(?:[1-9]|0[1-9]|[12]\\d|3[0-1])(\\/|\\-)(?:[1-9]|0[1-9]|1[0-2])(\\/|\\-)(?:19|20\\d\\d)"; 验证信用卡号:String reCard = "^(4\\d{12}(?:\\d{3})?)$"; 测试: String email = "qing.qingbyqing@gmail.vip.com";//邮箱测试           FormValid.isValidEmail(email);            String strIp="1.10.111.255";//IP地址测试           FormValid.isValidIp(strIp);                        String sDate="03/03/1911";             FormValid.isValidDate(sDate);//日期测试                      String strNum = "4432123456788881";          w(FormValid.isValidCard(strNum));//信用卡测试       本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/673756,如需转载请自行联系原作者
文章
Java · Perl
2017-11-21
利用正则表达式 进行字符的判断
using System; using System.Text.RegularExpressions; using System.Net; namespace 正则表达式检测字符串 {     class Program     {         static void Main(string[] args)         {                          Console.WriteLine("请输入字符串:");             string s = Console.ReadLine();             if (GF_IsOk.IsExistHanZi(s))             {                 Console.Write("包含汉字");             }             else             {                 Console.Write("不包含汉字");             }             Console.ReadLine();         }     }     //判断部分     public class GF_IsOk     {         /// <summary>         /// 判读是否是IP地址         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsIPStr(string in_str)         {             IPAddress ip;             return IPAddress.TryParse(in_str, out ip);         }         /// <summary>         /// 判断是否是数字         /// </summary>         /// <param name="strNumber"></param>         /// <returns></returns>         public static bool IsNumber(string strNumber)         {             Regex objNotNumberPattern = new Regex("[^0-9.-]");             Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");             Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");             String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";             String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";             Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");             return !objNotNumberPattern.IsMatch(strNumber) &&                    !objTwoDotPattern.IsMatch(strNumber) &&                    !objTwoMinusPattern.IsMatch(strNumber) &&                    objNumberPattern.IsMatch(strNumber);         }         /// <summary>         ///  判断是否是日期字符串         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsDateStr_yyyymmdd(string in_str)         {             if (in_str == "") return true;             if (in_str.Length != 8) return false;             return IsDateStr(in_str);         }         /// <summary>         /// 判断是否是日期字符串         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsDateStr(string in_str)         {             if (in_str == "") return true;             if (in_str.Length == 8)                 in_str = in_str.Substring(0, 4) + "-" + in_str.Substring(4, 2) + "-" + in_str.Substring(6, 2);             DateTime dtDate;             bool bValid = true;             try             {                 dtDate = DateTime.Parse(in_str);             }             catch (FormatException)             {                 // 如果解析方法失败则表示不是日期性数据                 bValid = false;             }             return bValid;         }         /// <summary>         /// 判断字符串中是否包含汉字,有返回true 否则为false         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsExistHanZi(string str)         {             Regex reg = new Regex(@"[\u4e00-\u9fa5]");//正则表达式             if (reg.IsMatch(str))             {                 return true;             }             else             {                 return false;             }         }         /// <summary>         /// 字段串是否为Null或为""(空)         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsStrNullOrEmpty(string str)         {             if (str == null || str.Trim() == string.Empty)                 return true;             return false;         }         /// <summary>         /// 返回文件是否存在         /// </summary>         /// <param name="filename">文件名</param>         /// <returns>是否存在</returns>         public static bool IsFileExists(string filename)         {             return System.IO.File.Exists(filename);         }         /// <summary>         /// 检测是否符合email格式         /// </summary>         /// <param name="strEmail">要判断的email字符串</param>         /// <returns>判断结果</returns>         public static bool IsValidEmail(string strEmail)         {             return Regex.IsMatch(strEmail, @"^[\w\.]+([-]\w+)*@[A-Za-z0-9-_]+[\.][A-Za-z0-9-_]");         }         public static bool IsValidDoEmail(string strEmail)         {             return Regex.IsMatch(strEmail, @"^@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");         }         /// <summary>         /// 检测是否是正确的Url         /// </summary>         /// <param name="strUrl">要验证的Url</param>         /// <returns>判断结果</returns>         public static bool IsURL(string strUrl)         {             return Regex.IsMatch(strUrl, @"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");         }         /// <summary>         /// 判断是否为base64字符串         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsBase64String(string str)         {             //A-Z, a-z, 0-9, +, /, =             return Regex.IsMatch(str, @"[A-Za-z0-9\+\/\=]");         }         /// <summary>         /// 检测是否有Sql危险字符         /// </summary>         /// <param name="str">要判断字符串</param>         /// <returns>判断结果</returns>         public static bool IsSafeSqlString(string str)         {             return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");         }     } } 本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366618,如需转载请自行联系原作者
文章
SQL
2017-11-23
利用正则表达式 进行字符的判断
using System; using System.Text.RegularExpressions; using System.Net; namespace 正则表达式检测字符串 {     class Program     {         static void Main(string[] args)         {                         Console.WriteLine("请输入字符串:");             string s = Console.ReadLine();             if (GF_IsOk.IsExistHanZi(s))             {                 Console.Write("包含汉字");             }             else             {                 Console.Write("不包含汉字");             }             Console.ReadLine();         }     }     //判断部分     public class GF_IsOk     {         /// <summary>         /// 判读是否是IP地址         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsIPStr(string in_str)         {             IPAddress ip;             return IPAddress.TryParse(in_str, out ip);         }         /// <summary>         /// 判断是否是数字         /// </summary>         /// <param name="strNumber"></param>         /// <returns></returns>         public static bool IsNumber(string strNumber)         {             Regex objNotNumberPattern = new Regex("[^0-9.-]");             Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");             Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");             String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";             String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";             Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");             return !objNotNumberPattern.IsMatch(strNumber) &&                    !objTwoDotPattern.IsMatch(strNumber) &&                    !objTwoMinusPattern.IsMatch(strNumber) &&                    objNumberPattern.IsMatch(strNumber);         }         /// <summary>         ///  判断是否是日期字符串         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsDateStr_yyyymmdd(string in_str)         {             if (in_str == "") return true;             if (in_str.Length != 8) return false;             return IsDateStr(in_str);         }         /// <summary>         /// 判断是否是日期字符串         /// </summary>         /// <param name="in_str"></param>         /// <returns></returns>         public static bool IsDateStr(string in_str)         {             if (in_str == "") return true;             if (in_str.Length == 8)                 in_str = in_str.Substring(0, 4) + "-" + in_str.Substring(4, 2) + "-" + in_str.Substring(6, 2);             DateTime dtDate;             bool bValid = true;             try             {                 dtDate = DateTime.Parse(in_str);             }             catch (FormatException)             {                 // 如果解析方法失败则表示不是日期性数据                 bValid = false;             }             return bValid;         }         /// <summary>         /// 判断字符串中是否包含汉字,有返回true 否则为false         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsExistHanZi(string str)         {             Regex reg = new Regex(@"[\u4e00-\u9fa5]");//正则表达式             if (reg.IsMatch(str))             {                 return true;             }             else             {                 return false;             }         }         /// <summary>         /// 字段串是否为Null或为""(空)         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsStrNullOrEmpty(string str)         {             if (str == null || str.Trim() == string.Empty)                 return true;             return false;         }         /// <summary>         /// 返回文件是否存在         /// </summary>         /// <param name="filename">文件名</param>         /// <returns>是否存在</returns>         public static bool IsFileExists(string filename)         {             return System.IO.File.Exists(filename);         }         /// <summary>         /// 检测是否符合email格式         /// </summary>         /// <param name="strEmail">要判断的email字符串</param>         /// <returns>判断结果</returns>         public static bool IsValidEmail(string strEmail)         {             return Regex.IsMatch(strEmail, @"^[\w\.]+([-]\w+)*@[A-Za-z0-9-_]+[\.][A-Za-z0-9-_]");         }         public static bool IsValidDoEmail(string strEmail)         {             return Regex.IsMatch(strEmail, @"^@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");         }         /// <summary>         /// 检测是否是正确的Url         /// </summary>         /// <param name="strUrl">要验证的Url</param>         /// <returns>判断结果</returns>         public static bool IsURL(string strUrl)         {             return Regex.IsMatch(strUrl, @"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");         }         /// <summary>         /// 判断是否为base64字符串         /// </summary>         /// <param name="str"></param>         /// <returns></returns>         public static bool IsBase64String(string str)         {             //A-Z, a-z, 0-9, +, /, =             return Regex.IsMatch(str, @"[A-Za-z0-9\+\/\=]");         }         /// <summary>         /// 检测是否有Sql危险字符         /// </summary>         /// <param name="str">要判断字符串</param>         /// <returns>判断结果</returns>         public static bool IsSafeSqlString(string str)         {             return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");         }     } }
文章
SQL
2013-02-05
开发与运维
3561 人关注 | 91222 讨论 | 87571 内容
+ 订阅
  • 阿里云物联网平台IOT Studio + 数据分析接口联调
  • 大促密集,CDN如何保障电商体验如丝般顺滑?
  • 自定义POD粒度的链路追踪标签
查看更多 >
数据库
87755 人关注 | 33880 讨论 | 27202 内容
+ 订阅
  • 阿里云物联网平台IOT Studio + 数据分析接口联调
  • 阿里云新品发布会周刊第87期 丨 阿里云MaxCompute 联合帆软重磅发布企业级BI分析解决方案 + 1分钟快速搭建属于自己的数字孪生应用
  • 阿里云文件存储NAS摘获“iTECH2020”年度明星产品奖
查看更多 >
安全
666 人关注 | 21343 讨论 | 26241 内容
+ 订阅
  • 大促密集,CDN如何保障电商体验如丝般顺滑?
  • SAG-1000 实施记
  • 直播泛在化的今天, 如何快速搭建不同场景的直播系统
查看更多 >