2016-05-31 60 views
-2

我有一個Windows窗體,其中我有一個文本框。我想用正則表達式插入的文本中不包含除其它的字符檢查:正則表達式不能正常工作

  1. 字母[AZ]或[AZ]
  2. 號,0-9
  3. _(下劃線)要麼 。 (點)

我寫了這行代碼似乎不能正常工作。
在VB.NET/C#:

Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$") 

我想例如創建一個變量象下面這樣:
C#

bool isValid = Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$") 

VB

Dim isValid As Boolean = Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$") 

我失去了什麼?

+0

(http://stackoverflow.com/a/967610/6188402) –

+2

如果'txtCreateDomain'是一個TextBox你應該調用'txtCreateDomain.Text'而不是'ToString()'。 –

回答

1

你忘了下劃線和破折號:[相關]

bool isValid = Regex.IsMatch(txtCreateDomain.Text, "^[a-zA-Z0-9_.-]*$") 
+0

這將只檢查文本是否包含所有這些權利?從我的正則表達式中,我希望所有這些情況都是有效的:domain.intern,domain1.intern,my-domain.intern – drgmak

+0

所有這些都會匹配,是的。但是如果你想驗證域名可能看看:http://stackoverflow.com/questions/24730805/regex-to-match-a-capture-a-domain-name或https://www.safaribooksonline。 com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html – eol

+0

Thanx,這解決了我的問題。 :) – drgmak

2

試試這個:

Regex.IsMatch(txtCreateDomain.ToString(), "^[a-zA-Z0-9_.]*$") 

編輯:

既然你要驗證的域名一個更好的解決辦法是使用該解決方案描述here

// https://stackoverflow.com/a/967610/162671 
private static bool IsValidDomainName(string name) 
{ 
    return Uri.CheckHostName(name) != UriHostNameType.Unknown; 
} 

或者像這樣的:

var valid = false; 
try 
{ 
    var uri = new Uri("http://example.com/"); 
    valid = false; 
} 
catch (UriFormatException){ 
    valid = false; 
} 
+1

@Nasreddine如果點在字符類內部則不會。 –

+2

今天我學到了東西。謝謝@ user6188402和lbarros。 – Nasreddine

+0

從我的正則表達式中,我希望所有這些情況都是有效的:domain.intern,domain1.intern,my-domain.intern @ user6188402 – drgmak

0
/^\w+$/ 

\w is equivalent to [A-Za-z0-9_] 
+1

user6188402 - Thnx通知我。我是新來的,所以沒有。 –

+1

'\ w等同於[A-Za-z0-9_]' - 默認情況下不在.NET中。 –

相關問題