2013-04-07 68 views
1

我想匹配下面的話匹配英文單詞可選點,斜線,數字存在

樹, tree.com, tree123, 123tree, 樹起來,

我做了以下condition..it工作正常,但我想加入他們的一個正則表達式

bool res1=Regex.IsMatch(term, "^[a-zA-Z-.]+$",RegexOptions.IgnoreCase) 
//works well but it matches . and - if they come alone i want a solution ?! 

bool res2=Regex.IsMatch(term, "^[a-zA-Z-.]+[0-9]+$",RegexOptions.IgnoreCase) //works well 

bool res3=Regex.IsMatch(term,"^[0-9]+[a-zA-Z-.]+$", RegexOptions.IgnoreCase)//works well 

我知道我可以使用

if(res1 || res2 || res3) {} 

,但我想加入這些表達式1個表達

+0

它不能正常工作或它正常工作? – 2013-04-07 20:16:38

+0

對不起,我編輯我的問題,它單獨正常工作,我想加入他們在一個正則表達式 – user690069 2013-04-07 20:18:58

回答

1

您可以使用一個超前零寬度斷言檢查,以確保(所需或其他任何東西)至少有一個字母包含

^(?=.*[a-zA-Z])[0-9a-zA-Z-.]+$ 
+0

thnx aloot,我是新來正則表達式,但我真的很喜歡它 – user690069 2013-04-07 20:32:12

0

假設你不想領導,尾隨或連續點或連字符,我建議這種模式:

bool res = Regex.IsMatch(term, "^[a-z0-9]+(?>[-.][a-z0-9]+)*$", RegexOptions.IgnoreCase); 

如果你想牛逼Ø確保有至少有一個字母,您可以更改模式:

^(?>[0-9]+(?>[-.][0-9]+)*[-.]?)?[a-z]+(?>[-.]?[a-z0-9]+)*$ 

demo