1

Webサイトの登録フォームの名前と名前を一致させるために正規表現を作成しました。要件は次のとおりです。

  • 最大44文字
  • -または'許容可能
  • 名前内に1つのスペースを使用できます
  • Unicodeは必要ありません

私の表現を短くする方法はありますか?

^[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}\s?[a-zA-Z]{2,12}['-]?[a-zA-Z]{1,10}$

名前フィールドの制限が多すぎませんか?

4

2 に答える 2

1

最初に正規表現を使用すると、応答は最大47文字になります:12 + 1 + 10 + 1 + 12 + 1+10。

文字、コマ、マイナス、または空白から44文字を許可するのが最善の方法だと思います。

最初の文字を強制的に文字にすることができます:

^[a-zA-Z][a-zA-Z\-'\s]{0,43}$
于 2012-12-16T16:01:08.567 に答える
0

コードで見落とされる可能性のある名前は次のとおりです。

Jo Blow                  not passed
Hyoung Kyoung Wu         not passed
Mike O'Neal              not passed
d'Are to Beaware         not passed
O Henry Smith            not passed
Mathais d'Arras          not passed
Martin Luther King Jr    not passed
George De FunkMaster     not passed
Kurtis B-Ball Basketball not passed
Ahmad el Jeffe           not passed
An Ni                    not passed

ほぼすべての名前を処理できるこれを試すことができます

^[^- '](?=(?![A-Z]?[A-Z]))(?=(?![a-z]+[A-Z]))(?=(?!.*[A-Z][A-Z]))(?=(?!.*[- '][- ']))[A-Za-z- ']{2,}$
Jo Blow                      passed
Hyoung Kyoung Wu             passed
Mike O'Neal                  passed
d'Are to Beaware             passed
O Henry Smith                passed
Mathais d'Arras              passed
Martin Luther King Jr        passed
George De FunkMaster         passed
Kurtis B-Ball Basketball     passed
Ahmad el Jeffe               passed
An Ni                        passed
于 2021-02-02T20:31:57.330 に答える