1

次の単語に一致させたい

ツリー、tree.com、tree123、123tree、ツリーアップ、

次の条件を作成しました..正常に動作しますが、それらを1つの正規表現に結合したい

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 つの式に結合したい

4

2 に答える 2

1

先読みゼロ幅アサーションを使用して、少なくとも 1 つの文字 (またはその他の必要なもの) が含まれていることを確認できます。

^(?=.*[a-zA-Z])[0-9a-zA-Z-.]+$
于 2013-04-07T20:22:07.853 に答える
0

先頭、末尾、または連続したドットまたはハイフンが必要ないと仮定すると、次のパターンをお勧めします。

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

少なくとも 1 つの文字があることを確認したい場合は、パターンを次のように変更できます。

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

デモ

于 2013-04-07T20:45:40.537 に答える