10

ユーザーが少なくとも1つの空のスペースで区切られた少なくとも2つの単語を挿入したかどうかを確認するために、正規表現を記述したいと思います。

例:

var regexp = new RegExp(/^[a-z,',-]+(\s)[a-z,',-]+$/i);

regexp.test("D'avid Camp-Bel"); // true
regexp.test("John ---"); // true // but it should be false!
4

6 に答える 6

21

あなた^[a-z]([-']?[a-z]+)*( [a-z]([-']?[a-z]+)*)+$のために働きますか?

[a-z]名前が常に文字で始まり、その後[-']?[a-z]+に少なくとも別の文字が続く限り、文字を区切ることができるようにします。*これらの部品をいくつでも使用できます。

後半( [a-z]([-']?[a-z]+)*)は、同じパターンの別の名前が続くスペースに一致します。+少なくとも1つの追加の名前が存在することを確認しますが、それ以上の名前を許可します。({1,2}2つまたは3つのパーツ名のみを許可する場合に使用できます。

于 2012-07-17T14:02:53.390 に答える
6

より単純なバージョン

    /^([\w]{3,})+\s+([\w\s]{3,})+$/i

([\ w] {3、})名には、長さが3以上の文字のみを含める必要があります

+\s名の後にスペースを続ける必要があります

+([\ w \ s] {3、})+ 2番目の名前には、長さが3以上の文字のみを含める必要があり、その後に他の名前を続けることができます。

/iは文字の大文字小文字を無視します。大文字または小文字にすることができます

于 2019-09-25T17:53:55.640 に答える
1
/^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$/g
于 2017-11-13T09:40:30.547 に答える
0

この回答はUnicode文字もサポートしています。

^[\p{L}]([-']?[\p{L}]+)*( [\p{L}]([-']?[\p{L}]+)*)+$
于 2016-09-09T14:42:35.343 に答える
0

このバージョンはアクセントのあるキャラクターを許可し、私にとってはうまく機能します!

^([a-zA-Zà-úÀ-Ú]{2,})+\s+([a-zA-Zà-úÀ-Ú\s]{2,})+$
于 2022-01-13T12:43:32.257 に答える
-1

いくつかのポイント:

  1. JavaScriptでは、一般に、名前付きコンストラクターよりもリテラルを使用する方が適切です(したがって、。/pattern/よりも使用しnew RegExp()ます(もちろん、コンストラクタールートが必要な場合があります)。

  2. コンストラクターを使用する場合、RegExpの場合、スラッシュを区切る必要はありません。

  3. 現在のパターンは最初の単語にのみ一致します

  4. {1,}修飾子で書くことができます+

試す

/^([a-z']+(-| )?)+$/i

家系の名前はダブルバレルの名前を使用できることに注意してください。

于 2012-07-17T12:38:50.243 に答える