Persamaan reguler untuk nama depan dan belakang

124

Untuk tujuan validasi situs web, saya memerlukan validasi nama depan dan nama belakang.

Nama depan hanya boleh berisi huruf, boleh beberapa kata dengan spasi, dan memiliki minimal tiga karakter, namun maksimal 30 karakter teratas. String kosong tidak boleh divalidasi (mis. Jason , jason , jason smith , jason smith , JASON , Jason smith , jason Smith , dan jason SMITH ).

Untuk nama belakang, harus satu kata, hanya huruf, dengan setidaknya tiga karakter, tetapi maksimal 30 karakter. String kosong tidak boleh divalidasi (misalnya lazslo , Lazslo , dan LAZSLO ).

Hellnar
sumber
10
Bagaimana dengan nama depan seperti 'Jo'?
a'r
6
hanya sebuah komentar: tanda hubung adalah umum di nama belakang ... mungkin ada nama belakang dengan spasi juga
tanascius
2
Catatan: validator ekspresi reguler akan mengabaikan masukan kosong: ini mungkin atau mungkin bukan yang Anda inginkan.
Hans Ke st ing
4
Jika memungkinkan, kecuali Anda memiliki alasan yang sangat kuat untuk meminta nama depan dan belakang, cukup berikan satu bidang "Nama". kalzumeus.com/2010/06/17/…
Chris
1
atau bagaimana dengan "X Æ A-12" twitter.com/elonmusk/status/1257508900812713984
Rishi Dua

Jawaban:

195

Jangan lupakan nama-nama seperti:

  • Mathias d'Arras
  • Martin Luther King, Jr.
  • Hector Sausage-Hausen

Ini seharusnya melakukan trik untuk banyak hal:

/^[a-z ,.'-]+$/i

ATAU Dukung nama internasional dengan unicode super manis:

/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u

maček
sumber
4
Saya akan melarikan diri dari karakter khusus dalam regexps ini - terutama .(titik desimal / titik / titik) karena ini adalah wildcard regexp =)
Joel Purra
30
Anda tidak dapat memvalidasi semua karakter nasional yang mungkin. Misalnya karakter Hungaria őŐűŰhilang, karakter Polandia łŁjuga, belum lagi sejumlah karakter Lithuania dan Latvia. Alih-alih, cobalah mencari pustaka yang mengubah karakter eksotis menjadi versi tanpa aksen yang sesuai, lalu tulis /^[a-z ,.'-]+$/iregexp.
gaborsch
69
Jadi 陳大文bukankah nama yang valid di sini?
Alvin Wong
16
Untuk Unicode, gunakan /^[\p{L}'][ \p{L}'-]*[\p{L}]$/u, betapapun cukup memaafkan.
Frederik Krautwald
4
AZ tidak perlu disertakan dalam contoh asli karena pengubah i setelah ekspresi berarti mengabaikan kasus.
mhanney
73

Anda membuat asumsi yang salah tentang format nama depan dan belakang. Mungkin lebih baik untuk tidak memvalidasi nama sama sekali, selain memeriksa bahwa namanya kosong.

Sjoerd
sumber
seharusnya menjadi komentar.
Demensik
32

Setelah melalui semua jawaban ini, saya menemukan cara untuk membangun regex kecil yang mendukung sebagian besar bahasa dan hanya memungkinkan untuk karakter kata. Bahkan mendukung beberapa karakter khusus seperti tanda hubung, spasi, dan apostrof. Saya telah menguji dengan python dan mendukung karakter di bawah ini:

^[\w'\-,.][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$

Karakter yang didukung:

abcdefghijklmnopqrstwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
áéíóúäëïöüÄ'
陳大文
łŁőŐűŰZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųū
ÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁ
ŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ.-
ñÑâê都道府県Федерации
আবাসযোগ্য জমির걸쳐 있는
CristianGuerrero
sumber
2
Dari semua jawaban yang satu ini bekerja seperti mantra menggunakan ng 4.
Deniss M.
1
Regex Anda gagal pada 2 karakter string. Saya pikir ini memperbaikinya^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
TKA
Karakter nasional didukung tetapi tidak pada posisi pertama. Saya akan mengubah ekspresi menjadi^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
TOUDIdel
18

Saya telah membuat regex kustom untuk menangani nama:

Saya telah mencoba jenis nama ini dan ternyata bekerja dengan sempurna

  1. John Smith
  2. John D'Largy
  3. John Doe-Smith
  4. John Doe Smith
  5. Hector Sausage-Hausen
  6. Mathias d'Arras
  7. Martin Luther King
  8. Ai Wong
  9. Chao Chang
  10. Alzbeta Bara

RegEx saya terlihat seperti ini:

^([a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?([a-zA-Z]{1,})?)

Model MVC4:

[RegularExpression("^([a-zA-Z]{2,}\\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\\s?([a-zA-Z]{1,})?)", ErrorMessage = "Valid Charactors include (A-Z) (a-z) (' space -)") ]

Harap perhatikan ganda \\untuk karakter melarikan diri

Bagi Anda yang baru mengenal RegEx saya pikir saya akan menyertakan penjelasan.

^               // start of line
[a-zA-Z]{2,}    // will except a name with at least two characters
\s              // will look for white space between name and surname
[a-zA-Z]{1,}    // needs at least 1 Character
\'?-?           // possibility of **'** or **-** for double barreled and hyphenated surnames
[a-zA-Z]{2,}    // will except a name with at least two characters
\s?             // possibility of another whitespace
([a-zA-Z]{1,})? // possibility of a second surname
Francois Muller
sumber
Saya memiliki tes unit yang menguji beberapa nama, lalu beberapa hal yang bukan nama. Daftar nama tidak memiliki 'token uji' sebagai entri pertama. Ini cocok dengan itu.
Rob
Hampir seperti yang saya cari. Saya kira (mungkin salah) bahwa Anda adalah pria Prancis. Dan satu kasus tidak dapat ditangani yang dapat Anda temui dalam bahasa Prancis: nama yang tersusun, seperti Jean-Pierre, Marie-Charlotte, dll ... Saya baru mengenal reg exp tetapi saya rasa -? seperti yang Anda lakukan untuk nama belakang, di antara 2 kata pertama, bisa melakukan pekerjaan itu.
Linpter
Hai Linpter, Bukan orang Prancis, tapi saya punya nama Prancis. Iya. Saya belum menguji ini, namun Anda harus bisa menambahkan - di [] pertama jadi ubah: ^ ([a-zA-Z] {2,} \ s [a-zA-z] {1,} ' ? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?) KE: ^ ([a-zA-Z -] {2,} \ s [a-zA-z] {1,} '? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?)
Francois Muller
16

Saya telah mencari dan mencari dan bermain dan bermain dengannya dan meskipun tidak sempurna, ini dapat membantu orang lain mencoba untuk memvalidasi nama depan dan belakang yang telah disediakan sebagai satu variabel.

Dalam kasus saya, variabel itu adalah $ name.

Saya menggunakan kode berikut untuk PHP saya:

    if (preg_match('/\b([A-Z]{1}[a-z]{1,30}[- ]{0,1}|[A-Z]{1}[- \']{1}[A-Z]{0,1}  
    [a-z]{1,30}[- ]{0,1}|[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}){2,5}/', $name)  
    # there is no space line break between in the above "if statement", any that   
    # you notice or perceive are only there for formatting purposes.  
    # 
    # pass - successful match - do something
    } else {
    # fail - unsuccessful match - do something

Saya belajar RegEx sendiri tetapi saya memiliki penjelasan untuk kode yang diberikan oleh sobat RegEx.
Ini dia:

Tegaskan posisi di batas kata «\ b»

Cocokkan ekspresi reguler di bawah dan tangkap kecocokannya menjadi referensi nomor 1
«([AZ] {1} [az] {1,30} [-] {0,1} | [AZ] {1} [- \ '] { 1} [AZ] {0,1} [az] {1,30} [-] {0,1} | [az] {1,2} [- \ '] {1} [AZ] {1} [ az] {1,30}) {2,5} »

Antara 2 dan 5 kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{2,5}»

* SAYA PERLU BANTUAN DI SINI DENGAN MEMAHAMI RAMIFIKASI CATATAN INI *

Catatan: Saya mengulangi grup penangkap itu sendiri. Grup hanya akan menangkap iterasi terakhir. Tempatkan grup penangkap di sekitar grup berulang untuk menangkap semua iterasi. «{2,5}»

Cocokkan ekspresi reguler di bawah ini (mencoba alternatif berikutnya hanya jika yang ini gagal) «[AZ] {1} [az] {1,30} [-] {0,1}»

Cocokkan satu karakter dalam rentang antara "A" dan "Z" «[AZ] {1}»

Tepat 1 kali «{1}»

Cocokkan satu karakter dalam rentang antara "a" dan "z" «[az] {1,30}»

Antara satu dan 30 kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{1,30}»

Cocokkan satu karakter yang ada dalam daftar “-” «[-] {0,1}»

Antara nol dan satu kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{0,1}»

Atau cocokkan ekspresi reguler nomor 2 di bawah (mencoba alternatif berikutnya hanya jika yang ini gagal) «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »

Cocokkan satu karakter dalam rentang antara "A" dan "Z" «[AZ] {1}»

Tepat 1 kali «{1}»

Cocokkan satu karakter yang ada dalam daftar di bawah «[- \ '] {1}»

Tepat 1 kali «{1}»

Salah satu karakter “-” «-» A 'character «\'»

Cocokkan satu karakter dalam rentang antara "A" dan "Z" «[AZ] {0,1}»

Antara nol dan satu kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{0,1}»

Cocokkan satu karakter dalam rentang antara "a" dan "z" «[az] {1,30}»

Antara satu dan 30 kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{1,30}»

Cocokkan satu karakter yang ada dalam daftar “-” «[-] {0,1}»

Antara nol dan satu kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{0,1}»

Atau cocokkan ekspresi reguler nomor 3 di bawah (seluruh grup gagal jika ini gagal untuk mencocokkan) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »

Cocokkan satu karakter dalam rentang antara "a" dan "z" «[az] {1,2}»

Antara satu dan 2 kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{1,2}»

Cocokkan satu karakter dalam rentang antara "" dan "'" «[- \'] {1}»

Tepat 1 kali «{1}»

Cocokkan satu karakter dalam rentang antara "A" dan "Z" «[AZ] {1}»

Tepat 1 kali «{1}»

Cocokkan satu karakter dalam rentang antara "a" dan "z" «[az] {1,30}»

Antara satu dan 30 kali, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah) «{1,30}»

Saya tahu validasi ini secara total mengasumsikan bahwa setiap orang yang mengisi formulir memiliki nama barat dan itu mungkin menghilangkan sebagian besar orang di dunia. Namun, saya merasa ini adalah langkah ke arah yang benar. Mungkin ekspresi reguler ini terlalu mendasar untuk diatasi oleh para guru secara sederhana atau mungkin ada beberapa alasan lain mengapa saya tidak dapat menemukan kode di atas dalam pencarian saya. Saya menghabiskan waktu terlalu lama untuk mencoba memahami hal ini, Anda mungkin akan memperhatikan betapa berkabutnya pikiran saya tentang semua ini jika Anda melihat nama tes saya di bawah ini.

Saya menguji kode pada nama-nama berikut dan hasilnya ada di dalam tanda kurung di sebelah kanan setiap nama.

  1. STEVE SMITH (gagal)
  2. Stev3 Smith (gagal)
  3. STeve Smith (gagal)
  4. Steve SMith (gagal)
  5. Steve Sm1th (meneruskan Steve Sm)
  6. d'Are to Beaware (diteruskan ke Are to Beaware)
  7. Jo Blow (lulus)
  8. Hyoung Kyoung Wu (lulus)
  9. Mike O'Neal (lulus)
  10. Steve Johnson-Smith (lulus)
  11. Jozef-Schmozev Hiemdel (lulus)
  12. O Henry Smith (lulus)
  13. Mathais d'Arras (lulus)
  14. Martin Luther King Jr (lulus)
  15. Downtown-James Brown (lulus)
  16. Darren McCarty (lulus)
  17. George De FunkMaster (lulus)
  18. Kurtis B-Ball Basketball (lulus)
  19. Ahmad el Jeffe (lulus)

Jika Anda memiliki nama dasar, harus ada lebih dari satu hingga lima agar kode di atas berfungsi, yang mirip dengan yang saya gunakan selama pengujian, kode ini mungkin cocok untuk Anda.

Jika Anda memiliki peningkatan, beri tahu saya. Saya baru dalam tahap awal (beberapa bulan pertama mencari tahu RegEx.

Terima kasih dan semoga berhasil, Steve

Steve Kinzey
sumber
1
Apakah hal-hal seperti "The Fourth" atau "IV" akan berfungsi dengan ini?
majidarif
11

Nama depan adalah

"([a-zA-Z]{3,30}\s*)+"

Jika Anda memerlukan seluruh bagian nama depan lebih pendek dari 30 huruf, Anda perlu memeriksanya secara terpisah, saya kira. Ekspresi ".{3,30}"harus melakukan itu.

Persyaratan nama belakang Anda akan diterjemahkan menjadi

"[a-zA-Z]{3,30}"

tetapi Anda harus memeriksa ini. Ada banyak nama belakang yang mengandung spasi.

Jens
sumber
Apakah ini memeriksa spasi di antara?
Y_Y
2
Bagaimana dengan O'Connor ? Apostrof perlu disertakan juga.
spaceman
1
Cukup tidak lengkap. Nama depan bisa jadi "Jean-Claude" dengan tanda hubung. Nama belakang bisa jadi "D'arc" dengan kutipan. Ditambah, bagaimana jika "François" adalah nama depannya?
bart
1
Bagaimana dengan "Al"? Nama depan yang valid. Hanya dua huruf. Bagaimana dengan nama China, Rusia, Hindi? Bagaimana dengan nama Eropa?
Christian Hujer
ini tidak akan berhasil untuk banyak nama non-inggris atau (non-latin?)
oldboy
7

Seperti yang dikatakan maček:

Jangan lupakan nama-nama seperti:

Mathias d'Arras

Martin Luther King, Jr.

Hector Sausage-Hausen

dan untuk menghapus kasus seperti:

..Mathias

Martin king, Jr.-

Ini akan mencakup lebih banyak kasus:

^([a-z]+[,.]?[ ]?|[a-z]+['-]?)+$
Asim KT
sumber
Jika saya ingin membatasi panjang karakter saya jadi apa kodenya?
G. Abhisek
1
Ya, Martin Luther King Jr. kembali sebagai pertandingan, dan begitu pula King Henry the Eighth.
Steve Kinzey
7

Saya sedang mengerjakan aplikasi yang memvalidasi Paspor Internasional (ICAO). Kami hanya mendukung karakter bahasa Inggris. Meskipun sebagian besar karakter nasional asing dapat diwakili oleh karakter dalam alfabet Latin misalnya è oleh e, ada beberapa karakter nasional yang memerlukan huruf tambahan untuk mewakilinya seperti umlaut Jerman yang memerlukan 'e' untuk ditambahkan ke huruf tersebut. misalnya ä by ae.

Ini adalah Regex JavaScript untuk nama depan dan belakang yang kami gunakan:

/^[a-zA-Z '.-]*$/

Jumlah karakter maksimal pada paspor internasional hingga 31 . Kami menggunakan maxlength = "31" untuk pesan kesalahan kata yang lebih baik daripada memasukkannya ke regex.

Berikut adalah potongan dari kode kami di AngularJS 1.6 dengan penanganan bentuk dan kesalahan:

class PassportController {
  constructor() {
    this.details = {};
    // English letters, spaces and the following symbols ' - . are allowed
    // Max length determined by ng-maxlength for better error messaging
    this.nameRegex = /^[a-zA-Z '.-]*$/;
  }
}

angular.module('akyc', ['ngMessages'])
  .controller('PassportController', PassportController);
 
.has-error p[ng-message] {
  color: #bc111e;
}

.tip {
  color: #535f67;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.6/angular-messages.min.js"></script>

<main ng-app="akyc" ng-controller="PassportController as $ctrl">
  <form name="$ctrl.form">

    <div name="lastName" ng-class="{ 'has-error': $ctrl.form.lastName.$invalid} ">
        <label for="pp-last-name">Surname</label>
        <div class="tip">Exactly as it appears on your passport</div>
        <div ng-messages="$ctrl.form.lastName.$error" ng-if="$ctrl.form.$submitted" id="last-name-error">
          <p ng-message="required">Please enter your last name</p>
          <p ng-message="maxlength">This field can be at most 31 characters long</p>
          <p ng-message="pattern">Only English letters, spaces and the following symbols ' - . are allowed</p>
        </div>
        
        <input type="text" id="pp-last-name" ng-model="$ctrl.details.lastName" name="lastName"
               class="form-control" required ng-pattern="$ctrl.nameRegex" ng-maxlength="31" aria-describedby="last-name-error" />
      </div>

      <button type="submit" class="btn btn-primary">Test</button>

  </form>
</main>

Alexander Burakevych
sumber
@danieltakeshi Anda tidak menggunakan Regex saya. Gunakan ini: / ^ [a-zA-Z '.-] * $ /
Alexander Burakevych
5

Saya menggunakan:

/^(?:[\u00c0-\u01ffa-zA-Z'-]){2,}(?:\s[\u00c0-\u01ffa-zA-Z'-]{2,})+$/i

Dan uji maxlength menggunakan cara lain

malix
sumber
5

Regex ini berfungsi untuk saya (digunakan di Angular 8):

([a-zA-Z',.-]+( [a-zA-Z',.-]+)*){2,30}

masukkan deskripsi gambar di sini

Ini akan menjadi tidak valid jika ada: -

  1. Awal atau akhir spasi kosong apa pun dari nama
  2. Punya simbol misalnya @
  3. Kurang dari 2 atau lebih dari 30

Contoh Nama Depan (spasi) tidak valid

masukkan deskripsi gambar di sini

Contoh Nama Depan yang valid:

masukkan deskripsi gambar di sini

Pangkalan Salju
sumber
6
Bagaimana dengan 'Björk Guðmundsdóttir'?
Mariusz Jamro
4

Demi kesederhanaan, Anda dapat menggunakan:

(.*)\s(.*)

Hal yang saya suka tentang ini adalah bahwa nama belakang selalu setelah nama depan, jadi jika Anda akan memasukkan grup yang cocok ini ke dalam database, dan namanya adalah John M. Smith, grup pertama adalah John M. , dan kelompok kedua adalah Smith.

egekhter
sumber
2
^\p{L}{2,}$

^ menegaskan posisi di awal baris.

\ p {L} cocok dengan semua jenis huruf dari bahasa apapun

{2,} Quantifier - Cocok antara 2 dan waktu tidak terbatas, sebanyak mungkin, memberikan kembali sesuai kebutuhan (serakah)

$ menegaskan posisi di akhir baris

Jadi sebaiknya nama dalam bahasa apa pun yang mengandung setidaknya 2 huruf (atau simbol) tanpa angka atau karakter lain.

Mihail Fernandes
sumber
perlu diingat bahwa beberapa karakter seperti 'dan - valid dalam nama.
Mathijs Segers
1

Jadi, dengan pelanggan kami membuat regex gila ini:

(^$)|(^([^\-!#\$%&\(\)\*,\./:;\?@\[\\\]_\{\|\}¨ˇ“”€\+<=>§°\d\s¤®™©]| )+$)
Máťa - Stitod.cz
sumber
1

Untuk nama depan dan belakang hanya ada 2 hal yang harus Anda cari:

  1. Panjangnya
  2. Kandungan

Ini ekspresi reguler saya:

var regex = /^[A-Za-z-,]{3,20}?=.*\d)/

1. Panjang

Di sini {3,20} membatasi panjang string antara 3 dan 20 karakter.

2. Konten

Informasi antara tanda kurung siku [A-Za-z] memungkinkan karakter huruf besar dan kecil. Semua simbol berikutnya (- ,.) juga diperbolehkan.

J Dorrian
sumber
1

Ini yang saya gunakan.

Regex ini hanya menerima nama dengan karakter minimum, dari A-Z a-z ,space and -.

Contoh nama:

Ionut Ionete, Ionut-Ionete Cantemir, Ionete Ionut-Cantemirm Ionut-Cantemir Ionete-Second

Batas karakter nama adalah 3. Jika Anda ingin mengubahnya, ubah {3,} menjadi {6,}

([a-zA-Z\-]+){3,}\s+([a-zA-Z\-]+){3,}
Ionut Ionete
sumber
2
Bagaimana dengan ä å ö Ä Å Ö dll? Sangat umum dalam nama Swedia. Nama terakhir O'Conner juga akan gagal dan nama berlaras ganda juga akan memberikan masalah. Ini akan sangat membuat frustasi bagi orang-orang yang memiliki nama yang valid.
Wilt
Bagaimana dengan tanda kutip pada nama seperti O'Connor?
Fogmeister
ekspresi saya mengembalikan Michael Jordan O'Reilly Jr. sebagai nama yang valid
Steve Kinzey
0

Ekspresi berikut akan berfungsi pada bahasa apa pun yang didukung oleh UTF-16 dan akan memastikan bahwa ada minimal dua komponen pada nama (yaitu, depan + belakang), tetapi juga akan mengizinkan sejumlah nama tengah.

/^(\S+ )+\S+$/u

Pada saat penulisan ini, tampaknya tidak ada jawaban lain yang memenuhi semua kriteria itu. Even ^\p{L}{2,}$, yang paling dekat, gagal karena juga akan cocok dengan karakter "tak terlihat", seperti U+FEFF(Zero Width No-Break Space).

Gabriel Somoza
sumber
tidak lulus javascript untuk regexr.com 1) memperingatkan fitur unicode mungkin tidak didukung di semua browser. 2) juga memungkinkan angka di regex. contoh: michael dimmittsasd2123123
Michael Dimmitt
0

Coba solusi ini, untuk kompatibilitas maksimum, seperti yang telah saya posting di sini :

JavaScript:

var nm_re = /^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$/;

HTML5:

<input type="text" name="full_name" id="full_name" pattern="^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$" required>

James Anderson Jr.
sumber
0

Ini sepertinya berhasil untuk saya:

[\S]{2,} [\S]{2,}( [\S]{2,})*
AL
sumber
-1

Fungsi sederhana menggunakan preg_match di php

<?php
function name_validation($name) {
    if (!preg_match("/^[a-zA-Z ]*$/", $name) === false) {
        echo "$name is a valid name";
    } else {
        echo "$name is not a valid name";
    }
}

//Test
name_validation('89name');
?>
pencahayaan
sumber
-1

Nama lengkap dengan hanya satu spasi:

^[a-zA-Z'\-\pL]+(?:(?! {2})[a-zA-Z'\-\pL ])*[a-zA-Z'\-\pL]+$
Lucas Moyano Angelini
sumber
-2

Jika Anda ingin seluruh nama depan antara 3 dan 30 karakter tanpa batasan pada setiap kata, coba ini:

[a-zA-Z ]{3,30}

Berhati-hatilah karena itu mengecualikan semua huruf asing sebagai é, è, à, ï.

Jika Anda ingin batas 3 hingga 30 karakter diterapkan ke setiap kata, regexp Jens akan melakukan pekerjaan itu.

Thibault Falise
sumber
-2
var name = document.getElementById('login_name').value; 
if ( name.length < 4  && name.length > 30 )
{
    alert ( 'Name length is mismatch ' ) ;
} 


var pattern = new RegExp("^[a-z\.0-9 ]+$");
var return_value = var pattern.exec(name);
if ( return_value == null )
{
    alert ( "Please give valid Name");
    return false; 
} 
Pavunkumar
sumber