匹配英文单词与可选点,斜线,数字存在

时间:2013-04-07 20:15:11

标签: .net regex

我想匹配以下单词

树, tree.com, tree123, 123树, 树上,

我做了以下条件..它正常工作,但我想将它们加入一个正则表达式

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个表达式

中加入这些表达式

2 个答案:

答案 0 :(得分:1)

您可以使用超前零宽度断言进行检查,以确保至少包含一个字母(或其他任何必需的字母)

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

答案 1 :(得分:0)

假设您不想要前导,尾随或连续点或连字符,我建议使用此模式:

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

如果您想确定至少有一个字母,可以将模式更改为:

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

demo