2015-08-18 60 views
2

我將我的RegularExpression()方法從具有所有if語句的validate()方法中分離出來。我如何使用我的正則表達式代碼,如果它像這樣分開?我對編程相當陌生,而且我仍然在學習如何使用方法,請舉例說明。使用正則表達式從另一種方法在C#

public void Validate() 
    { 

     RegularExpression(); 

     if (PhoneNumber_Regex.IsMatch(PhonNumb_txBox.Text) == false) 
      { 
       MessageBox.Show("Invalid cellphone number"); 
      } 

     if (Email_Regex.IsMatch(Email_txBox.Text) == false) 
      { 
       MessageBox.Show("Invalid E-Mail"); 
      } 
    } 

public RegularExpression(object PhoneNumber_Regex) 
    { 
     var PhoneNumber_Regex = new Regex(@"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$"); 

     var Email_Regex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 

    } 
+1

使用的任何功能的一部分屬性和字段而不是局部變量。 –

+0

你好@TimSchmelter你能給我舉個例子嗎?我會很感激。 – taji01

回答

5

添加一個靜態類,你要將你的正則表達式:

public static class MyRegexps 
{ 
    public static readonly Regex PhoneNumber_Regex = new Regex(@"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$"); 
    public static readonly Regex Email_Regex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 
} 

然後在您的來電顯示方式使用它們:

if (MyRegexps.PhoneNumber_Regex.IsMatch(PhonNumb_txBox.Text) == false) 
{ 
    MessageBox.Show("Invalid cellphone number"); 
} 
0

應該做這行的東西。

public static class MyValidator 
{ 
    protected static PhoneNumberRegex = new Regex(@"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$"); 
    protected static EmailRegex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 

    public static bool ValidatePhoneNumber(string strToMatch) 
    { 
    return PhoneNumberRegex.IsMatch(strToMatch); 
    } 

    public static bool ValidateEmail(string strToMatch) 
    { 
    return EmailRegex.IsMatch(strToMatch); 
    } 
} 

,然後使用它像這樣

if (!MyValidator.ValidatePhoneNumber(PhonNumb_txBox.Text)) 
{ 
    MessageBox.Show("Invalid cellphone number"); 
} 
0
  1. 雖然它不是共享方法之間的事情的唯一途徑,在這個特定的情況下,它是有意義的使用類級別成員。
  2. 你的正則表達式本身不太可能改變,可能是static
  3. 在構造函數中初始化它們,所以它是自動的,而不必手動調用初始化程序。

這一切都增加了更多的東西是這樣的:

public class MyClass 
{ 
    private static Regex PhoneNumber_Regex { get; set; } 
    private static Regex Email_Regex { get; set; } 

    static MyClass 
    { 
     PhoneNumber_Regex = new Regex(@"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$"); 
     Email_Regex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 
    } 

    public void Validate() 
    { 
     if (!PhoneNumber_Regex.IsMatch(PhonNumb_txBox.Text)) 
      MessageBox.Show("Invalid cellphone number"); 
     if (!Email_Regex.IsMatch(Email_txBox.Text)) 
      MessageBox.Show("Invalid E-Mail"); 
    } 
} 
1

public RegularExpression(object PhoneNumber_Regex) 
{ 
    var PhoneNumber_Regex = new Regex(@"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$"); 

    var Email_Regex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 

} 

您聲明2個變量 - 但範圍是指那些變量不存在這一呼籲之外,因此,他們不能使用。

然而,如果作爲類的一部分,你宣佈

readonly Regex Email_Regex = new Regex(@"^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$."); 

讓您擁有一個只讀變量,那麼你可以使用像你認爲是該類

if (Email_Regex.IsMatch(Email_txBox.Text) == false) 
    { 
     MessageBox.Show("Invalid cellphone number"); 
    }