Wyrażenie regularne dla imienia i nazwiska


124

Do celów walidacji strony internetowej potrzebuję weryfikacji imienia i nazwiska.

Imię powinno zawierać tylko litery, może składać się z kilku słów ze spacjami i mieć co najmniej trzy znaki, ale maksymalnie 30 znaków na górze. Nie należy sprawdzać poprawności pustego ciągu (np. Jason , jason , jason smith , jason smith , JASON , Jason smith , jason Smith i jason SMITH ).

W przypadku nazwiska powinno to być jedno słowo, tylko litery, składające się z co najmniej trzech znaków, ale nie więcej niż 30 znaków. Puste ciągi nie powinny być sprawdzane (np. Lazslo , Lazslo i LAZSLO ).


10
A co z imionami, takimi jak „Jo”?
marcu

6
uwaga: łączniki są powszechne w nazwiskach ... może są też
nazwiska

2
Uwaga: weryfikator regularexpression zignoruje puste dane wejściowe: może to być lub nie to, czego chcesz.
Hans Ke ing

4
Jeśli to w ogóle możliwe, chyba że masz niezwykle ważny powód, by wymagać imienia i nazwiska, po prostu wypełnij jedno pole „Imię”. kalzumeus.com/2010/06/17/…
Chris

Odpowiedzi:


195

Nie zapomnij o nazwach takich jak:

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

To powinno wystarczyć w przypadku większości rzeczy:

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

LUB Obsługuj międzynarodowe nazwy za pomocą super słodkiego Unicode:

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


4
Chciałbym uciec znaków specjalnych w tych wyrażeniach regularnych - zwłaszcza .(punkt dziesiętny / dot / kropka), ponieważ jest to wieloznaczny = regexp)
Joel Purra

30
Nie możesz zweryfikować wszystkich możliwych znaków narodowych. őŐűŰBrakuje na przykład znaków węgierskich , polskich łŁ, nie wspominając o wielu litewskich i łotewskich. Zamiast tego spróbuj znaleźć bibliotekę, która przekształci egzotyczne znaki w odpowiednią wersję bez akcentu, a następnie napisz /^[a-z ,.'-]+$/iwyrażenie regularne.
gaborsch

69
Więc czy to 陳大文nie jest prawidłowe imię?
Alvin Wong,

16
W przypadku Unicode użyj /^[\p{L}'][ \p{L}'-]*[\p{L}]$/u, jednak dość wybaczającego.
Frederik Krautwald

4
AZ nie musi być uwzględniany w oryginalnym przykładzie, ponieważ modyfikator i po wyrażeniu oznacza ignorowanie wielkości liter.
mhanney

73

Robisz fałszywe założenia dotyczące formatu imienia i nazwiska. Prawdopodobnie lepiej w ogóle nie sprawdzać poprawności nazwy, poza sprawdzeniem, czy jest pusta.


powinien być komentarz.
Dementic

32

Po przejrzeniu wszystkich tych odpowiedzi znalazłem sposób na zbudowanie małego wyrażenia regularnego, które obsługuje większość języków i pozwala tylko na znaki słowne. Obsługuje nawet niektóre znaki specjalne, takie jak łączniki, spacje i apostrofy. Testowałem w Pythonie i obsługuje poniższe znaki:

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

Obsługiwane znaki:

abcdefghijklmnopqrstwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
áéíóúäëïöüÄ'
陳大文
łŁőŐűŰZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųū
ÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁ
ŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ.-
ñÑâê都道府県Федерации
আবাসযোগ্য জমির걸쳐 있는

2
Ze wszystkich odpowiedzi ta zadziałała jak urok przy użyciu 4-go.
Deniss M.

1
Twoje wyrażenie regularne kończy się niepowodzeniem w przypadku ciągu 2 znaków. Myślę, że to naprawiło^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
TKA

Znaki narodowe są obsługiwane, ale nie na pierwszej pozycji. ^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
Zmieniłbym

18

Utworzyłem niestandardowe wyrażenie regularne do obsługi nazw:

Wypróbowałem tego typu nazwy i stwierdziłem, że działają idealnie

  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

Moje wyrażenie regularne wygląda następująco:

^([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 -)") ]

Zwróć uwagę na podwójne \\znaki ucieczki

Pomyślałem, że dla tych z Was, którzy są nowicjuszami w RegEx, dołączę wyjaśnienie.

^               // 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

Mam test jednostkowy, który sprawdza kilka nazw, a następnie kilka rzeczy, które nie są nazwami. Lista bez nazw zawiera „token testowy” jako pierwszy wpis. To pasuje do tego.
Rob

To prawie to, czego szukałem. Myślę (może niesłusznie), że jesteś Francuzem. I jeden przypadek nie jest obsługiwany, który można spotkać po francusku: skomponowane imiona, takie jak Jean-Pierre, Marie-Charlotte itp. Jestem nowy w reg exp, ale myślę, że -? tak jak w przypadku nazwiska, między dwoma pierwszymi słowami, może wykonać zadanie.
Linpter

Cześć Linpter, nie francuski, ale mam francuskie imię. Tak. Nie testowałem tego, jednak powinieneś być w stanie dodać - w pierwszym [], więc zmień: ^ ([a-zA-Z] {2,} \ s [a-zA-z] {1,} ' ? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?) TO: ^ ([a-zA-Z -] {2,} \ s [a-zA-z] {1,} '? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?)
Francois Muller

16

Szukałem, szukałem, grałem i bawiłem się nim i chociaż nie jest on doskonały, może pomóc innym w podjęciu próby sprawdzenia poprawności imion i nazwisk, które zostały podane jako jedna zmienna.

W moim przypadku ta zmienna to $ name.

Użyłem następującego kodu dla mojego PHP:

    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

Sam uczę się RegEx, ale mam wyjaśnienie kodu dostarczone przez znajomego RegEx.
Oto ona:

Potwierdź pozycję na granicy słowa «\ b»

Dopasuj poniższe wyrażenie regularne i przechwyć jego dopasowanie do odniesienia wstecznego numer 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} »

Od 2 do 5 razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy) «{2,5}»

* POTRZEBUJĘ TUTAJ POMOCY ZROZUMIENIEM RAMIFIKACJI NINIEJSZEJ NOTATKI *

Uwaga: powtórzyłem samą grupę przechwytywania. Grupa przechwyci tylko ostatnią iterację. Umieść grupę przechwytywania wokół powtarzanej grupy, aby uchwycić wszystkie iteracje. «{2,5}»

Dopasuj jedno z poniższych wyrażeń regularnych (próba skorzystania z następnej alternatywy tylko wtedy, gdy to się nie powiedzie) «[AZ] {1} [az] {1,30} [-] {0,1}»

Dopasuj pojedynczy znak z zakresu od „A” do „Z” «[AZ] {1}»

Dokładnie 1 raz «{1}»

Dopasuj pojedynczy znak z zakresu od „a” do „z” «[az] {1,30}»

Od jednego do 30 razy, tyle razy, ile to możliwe, oddając w razie potrzeby (chciwy) «{1,30}»

Dopasuj pojedynczy znak obecny na liście „-” «[-] {0,1}»

Od zera do jednego razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy) «{0,1}»

Lub dopasuj wyrażenie regularne numer 2 poniżej (próba wykonania następnej alternatywy tylko wtedy, gdy ta się nie powiedzie) «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »

Dopasuj pojedynczy znak z zakresu od „A” do „Z” «[AZ] {1}»

Dokładnie 1 raz «{1}»

Dopasuj pojedynczy znak z poniższej listy «[- \ '] {1}»

Dokładnie 1 raz «{1}»

Jeden ze znaków „-” «-» A 'znak «\'»

Dopasuj pojedynczy znak z zakresu od „A” do „Z” «[AZ] {0,1}»

Od zera do jednego razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy) «{0,1}»

Dopasuj pojedynczy znak z zakresu od „a” do „z” «[az] {1,30}»

Od jednego do 30 razy, tyle razy, ile to możliwe, oddając w razie potrzeby (chciwy) «{1,30}»

Dopasuj pojedynczy znak obecny na liście „-” «[-] {0,1}»

Od zera do jednego razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy) «{0,1}»

Lub dopasuj wyrażenie regularne numer 3 poniżej (cała grupa zawiedzie, jeśli ta nie pasuje) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »

Dopasuj pojedynczy znak z zakresu od „a” do „z” «[az] {1,2}»

Od jednego do dwóch razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy) «{1,2}»

Dopasuj pojedynczy znak z zakresu od „” do „'” «[- \'] {1}»

Dokładnie 1 raz «{1}»

Dopasuj pojedynczy znak z zakresu od „A” do „Z” «[AZ] {1}»

Dokładnie 1 raz «{1}»

Dopasuj pojedynczy znak z zakresu od „a” do „z” «[az] {1,30}»

Od jednego do 30 razy, tyle razy, ile to możliwe, oddając w razie potrzeby (chciwy) «{1,30}»

Wiem, że ta weryfikacja całkowicie zakłada, że ​​każda osoba wypełniająca formularz ma zachodnie imię i może to wyeliminować ogromną większość ludzi na świecie. Jednak czuję, że jest to krok we właściwym kierunku. Być może to wyrażenie regularne jest zbyt proste, aby guru mogli je w prosty sposób rozwiązać, a może jest inny powód, dla którego nie mogłem znaleźć powyższego kodu w moich wyszukiwaniach. Spędziłem zbyt dużo czasu, próbując to rozgryźć, prawdopodobnie zauważysz, jak mglisty jest mój umysł, jeśli spojrzysz na moje nazwy testów poniżej.

Przetestowałem kod na następujących nazwach, a wyniki są w nawiasach po prawej stronie każdej nazwy.

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

Jeśli masz podstawowe nazwy, musi być więcej niż jedna do pięciu, aby powyższy kod działał, które są podobne do tych, których użyłem podczas testów, ten kod może być dla Ciebie.

Jeśli masz jakieś ulepszenia, daj mi znać. Jestem dopiero na wczesnym etapie (kilka pierwszych miesięcy zastanawiania się nad RegEx.

Dzięki i powodzenia, Steve


1
Czy takie rzeczy jak „The Fourth” lub „IV” będą działać z tym?
majidarif

11

Imię byłoby

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

Jeśli chcesz, aby cała część imienia była krótsza niż 30 liter, myślę, że musisz to sprawdzić osobno. Wyrażenie ".{3,30}"powinno to zrobić.

Twoje wymagania dotyczące nazwiska przełożyłyby się na

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

ale powinieneś to sprawdzić. Istnieje wiele nazwisk zawierających spacje.


Czy to sprawdza odstępy między?
Y_Y

2
A co z O'Connorem ? Należy również dołączyć apostrof.
spaceman

1
Całkiem niekompletne. Imię mogłoby brzmieć „Jean-Claude” z łącznikiem. Nazwisko może brzmieć „D'arc” z cytatem. A co jeśli „François” to imię?
bart

1
A co z „Alem”? Ważne imię. Tylko dwie litery. A co z nazwami chińskimi, rosyjskimi i hindi? A co z nazwami europejskimi?
Christian Hujer,

to nie zadziała dla wielu nazwisk nieanglojęzycznych lub (nie-łacińskich?)
oldboy

7

Jak powiedział maček:

Nie zapomnij o nazwach takich jak:

Mathias d'Arras

Martin Luther King Jr.

Hector Sausage-Hausen

i usuwać przypadki takie jak:

..Mathias

Martin King Jr. -

Obejmuje to więcej przypadków:

^([a-z]+[,.]?[ ]?|[a-z]+['-]?)+$

Jeśli chcę ograniczyć długość znaków, jaki może być na to kod?
G.Abhisek

1
Tak, Martin Luther King Jr. powraca jako mecz, podobnie jak król Henryk VIII.
Steve Kinzey

7

Pracuję nad aplikacją, która weryfikuje paszporty międzynarodowe (ICAO). Obsługujemy tylko znaki angielskie. Podczas gdy większość obcych znaków narodowych można przedstawić za pomocą znaku w alfabecie łacińskim, np. È przez e, istnieje kilka znaków narodowych, które wymagają dodatkowej litery, aby je przedstawić, na przykład niemiecki umlaut, który wymaga dodania litery „e” do litery np. ä przez ae.

To jest JavaScript Regex dla imienia i nazwiska, którego używamy:

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

Maksymalna liczba znaków w paszporcie międzynarodowym to 31 . Używamy maxlength = "31", aby ulepszyć komunikaty o błędach słów zamiast włączać je do wyrażenia regularnego.

Oto fragment naszego kodu w AngularJS 1.6 z obsługą formularzy i błędów:

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>


@danieltakeshi, nie użyłeś mojego Regex. Użyj tego: / ^ [a-zA-Z '.-] * $ /
Alexander Burakevych,

5

Używam:

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

I sprawdź maksymalną długość, używając innych metod


5

To regex działa dla mnie (było używane w Angular 8):

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

wprowadź opis obrazu tutaj

Będzie nieważny, jeśli istnieje: -

  1. Dowolny biały początek lub koniec nazwy
  2. Masz symbole, np. @
  3. Mniej niż 2 lub więcej niż 30

Przykład niepoprawne imię (spacja)

wprowadź opis obrazu tutaj

Przykładowe prawidłowe imię:

wprowadź opis obrazu tutaj


6
A co z „Björk Guðmundsdóttir”?
Mariusz Jamro

4

Dla uproszczenia możesz użyć:

(.*)\s(.*)

Podoba mi się w tym to, że nazwisko jest zawsze po imieniu, więc jeśli zamierzasz wprowadzić te dopasowane grupy do bazy danych, a nazwisko to John M. Smith, pierwszą grupą będzie John M. , a drugą grupą będzie Smith.


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

^ potwierdza pozycję na początku wiersza.

\ p {L} pasuje do dowolnego rodzaju liter z dowolnego języka

{2,} Quantifier - Dopasowuje od 2 do nieograniczonej liczby razy, tyle razy, ile to możliwe, dając w razie potrzeby (chciwy)

$ potwierdza pozycję na końcu wiersza

Powinna więc to być nazwa w dowolnym języku zawierająca co najmniej 2 litery (lub symbole) bez cyfr lub innych znaków.


pamiętaj, że niektóre znaki, takie jak „i -”, są prawidłowe w nazwach.
Mathijs Segers

1

Tak więc z klientem tworzymy to szalone wyrażenie regularne:

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

1

Imiona i nazwiska to tak naprawdę tylko 2 rzeczy, których powinieneś szukać:

  1. Długość
  2. Zadowolony

Oto moje wyrażenie regularne:

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

1. Długość

Tutaj {3,20} ogranicza długość łańcucha do 3 do 20 znaków.

2. Treść

Informacje zawarte w nawiasach kwadratowych [A-Za-z] dopuszczają duże i małe litery. Dozwolone są również wszystkie kolejne symbole (-.).


1

To jest to, czego używam.

To wyrażenie regularne akceptuje tylko nazwy z minimalną liczbą znaków od A-Z a-z ,space and -.

Przykład nazw:

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

Limit znaków nazwy to 3. Jeśli chcesz to zmienić, zmień {3,} na {6,}

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

2
A co z ä å ö Ę Å Ö itd.? Bardzo powszechne w szwedzkich nazwach. Nazwisko O'Conner również zawiedzie, a nazwiska z podwójną lufą również będą powodować problemy. Będzie to bardzo frustrujące dla osób, które mają takie prawidłowe nazwiska.
Wilt

A co z apostrofem w nazwach takich jak O'Connor?
Fogmeister

moje wyrażenie zwraca Michael Jordan O'Reilly Jr. jako prawidłowe imię
Steve Kinzey

0

Poniższe wyrażenie będzie działać w każdym języku obsługiwanym przez UTF-16 i zapewni, że nazwa zawiera co najmniej dwa składniki (tj. Pierwsze + ostatnie), ale pozwoli także na dowolną liczbę drugich imion.

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

W chwili pisania tego tekstu wydaje się, że żadna z pozostałych odpowiedzi nie spełnia wszystkich tych kryteriów. Nawet ^\p{L}{2,}$, która jest najbliższa, nie spełnia wymagań, ponieważ będzie również dopasowywać znaki „niewidoczne”, takie jak U+FEFF(Spacja bez przerwy o zerowej szerokości).


nie obsługuje javascript dla regexr.com 1) ostrzeżenie, że funkcja Unicode może nie być obsługiwana we wszystkich przeglądarkach. 2) także dopuszcza liczby w wyrażeniu regularnym. przykład: michael dimmittsasd2123123
Michael Dimmitt

0

Wypróbuj te rozwiązania, aby uzyskać maksymalną kompatybilność, jak już napisałem tutaj :

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>


0

Wydaje się, że to działa dla mnie:

[\S]{2,} [\S]{2,}( [\S]{2,})*

-1

Prosta funkcja wykorzystująca preg_match w 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');
?>


-2

Jeśli chcesz, aby całe imię miało od 3 do 30 znaków bez ograniczeń co do poszczególnych słów, spróbuj tego:

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

Pamiętaj, że wyklucza wszystkie obce litery, takie jak é, è, à, ï.

Jeśli chcesz, aby do każdego słowa obowiązywało ograniczenie od 3 do 30 znaków, regexp Jens zrobi to.


-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; 
} 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.