2016-05-31 138 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中。 –