0

私は正規表現が苦手で、インターネットでこれを探していましたが、見つかりませんでした。私のDBにはfirst_name、second_name、およびlast_nameを保存していますが、私のWebサイトには2つのテックスボックスしかありません(1つはfirst_name用、もう1つはlast_name用)。同じテキストボックスに first_name と second_name を含めることを許可するチェックを含めたいです。したがって、チェックは次のようになります。

  • 文字、アポストロフィ、およびスペースのみを許可する
  • first_name のテキストボックスにスペースが含まれていない場合、最大長は 50 文字です
  • スペースを含む場合、最大長は 50 の最初の単語 + スペース + (残りの 50、必要な数の単語) です。

これは正規表現を使用して可能ですか? ありがとう、どんなアイデアでも大歓迎です。

アップデート

JS ライブラリhttps://github.com/joshfraser/JavaScript-Name-Parserを使用する別のアプローチを見つけました。私はいくつかの変更を行います:

  • 解析された名前の長さを確認する
  • 「Dr.」、「Mr.」などのテキストをローカライズします。

次に、名前を DB に個別に保存します。これは、できるだけ少ないテキスト ボックスが必要な短い登録フォームです。その後、ユーザーは自分のプロファイルに移動し、データが間違っている場合は個別に編集できます。

4

2 に答える 2

2

このようなもの:

/^[A-Z']{1,50}(\s[A-Z'\s]{1,50})?$/i

(更新:上記のJS正規表現は指定された要件に一致すると思いますが、最初のスペースが名の終わりを示していると想定しているため、要件が実際の名前と一致するかどうかはわかりません。Iファーストネームにスペースが含まれているアジアの名前の友達がいます。また、彼女のファーストネーム「アンマリー」をハイフンではなくスペースで綴る友達がいます。彼女にはミドルネームもあります。彼女の場合は「マリー」がミドルネームの一部であると主張するのは正しくありません。)

于 2012-10-24T04:11:56.517 に答える
1

これは正規表現で行うことができると思いますが、正規表現を使用する前にタスクを少し分割する方が簡単でクリーンだと思います。スペース文字で分割を実行し、結果の文字列の長さを確認してから、正規表現を使用して文字とアポストロフィのみを確認することをお勧めします.

于 2012-10-24T04:18:23.337 に答える