2015-07-16 2 views
0

Мне нужна помощь с регулярными выражениями. Как написать код регулярных выражений, чтобы соответствовать следующим критериям?Проверка имени с помощью регулярных выражений

  1. Он состоит из по меньшей мере двух разделенных пробелами имен длинных
  2. Все пробел имена не менее 2 символов
  3. По крайней мере один пробел имя не менее 4 символов длиной

Я хотел бы написать его с положительным кодом с опережением, (?=...). Некоторые примеры названий:

Допустимы:

Хендрик Argus
Jo Ha Кунц
Craig Wood-Stone

Invalid:

Johannes
Хендрик А.
Ee Ff Gg

+1

Что именно вам нужно? Что вы уже пробовали и где вы застряли? –

+2

Просто [FYI] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) ... – Sam

+0

Обычно это будет '^ (? =. * ? \ w {4,}) [] * (?: \ w {2,} (?: [] + \ w {2,}) +) [] * $ ', но ваша большая проблема заключается в _what определяет имя_? – sln

ответ

0

я придумал следующее регулярное выражение:

(\w{2,}[ ]+\w{4,})|(\w{4,}[ ]+\w{2,}) 

Это соответствует слово символ в Qty, по крайней мере, 2 с последующим пробелом и последующим словом характера в количество не менее 4. ИЛИ противоположных слов.

var words = ["Hendrik Argus", "Jo Ha Kunts", "Craig Wood-Stone", "Johannes", "Hendrik A.", "Ee Ff Gg" ]; 
 

 
var regex = /(\w{2,}[ ]+\w{4,})|(\w{4,}[ ]+\w{2,})/ 
 

 
words.forEach(function(word) { 
 
    var matches = word.search(regex) != -1; 
 
    console.log('"' + word + '" is valid name : ' + matches); 
 
});

DEMO and explanation

0

Спасибо всем за ответы.

я решил мою проблему с помощью этой строки кода:

^- [] ((= [A-Za-Z] {4}?.?): [A-Za-Z -] {2,} (?: [] {1} [A-Za-z -] {2,}) +) * $

+0

Кажется, что он не работает, см. [Здесь] (https://regex101.com/ r/pV6oF0/1) – MaxZoom

+0

Интересно. Когда я тестировал его на своем сайте, все тестовые файлы отлично работали ... –

Смежные вопросы