我想匹配以下单词
树, 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个表达式
中加入这些表达式答案 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]+)*$