2016-06-01 10 views
2

C#でハイフンを含むことができるキリル文字の3つの単語にマッチする正規表現を出そうとしています。ハイフンを含むことができるキリル文字の3つの単語に一致する正規表現

マッチ: "АБАБА"、 "АБАБАБ"、 "АБ-ААБАБ" など

と一致していません:^[\ u0400- \ u04FF] + $

: "АБАБ"、 "АБАБ"、 "АБАБ-" など

は、これまでのところ、私は唯一のキリル文字のための正規表現を持っています

+0

をので、何がproblem..useです: - '[\ u0400- \ u04FF-] + ' – rock321987

答えて

1

まず、ルールに手の込んだ:

  • Wordは文字で、文字、端から開始する必要があり
  • ハイフンの任意の数を含めることができます
  • 言葉。各ハイフンは、文字で囲む必要があります(または ぶら下がりを開始ハイフンが許可されていません倍増)

ので単一の単語のために、私たちは

[\u0400-\u04FF](-?[\u0400-\u04FF]+)* 

いくつかを持っています例:

АБ  // correct 
    АБ-А-АБ // correct (with hyphens) 
    Z  // incorrect: non cyrillic letter 
    -А  // incorrect: starting hyphen 
    А-  // incorrect: dangling hyphen 
    А--Б // incorrect: double hyphen 

は今、言葉のために:私たちはにより、任意の数の空白\sを分離正確に3言葉たい:

^[\u0400-\u04FF](-?[\u0400-\u04FF]+)*(\s+[\u0400-\u04FF](-?[\u0400-\u04FF]+)*){2}$ 
+0

ありがとうございました!ところで、単語の間に正確に1つの空白が必要な場合はどうなりますか? – Yulian

+1

@Yulian:*ちょうど1つの*スペースの場合は、 '\ s +'を '\ s'に変更してください –

関連する問題