Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите написать регулярное выражение (https://javascript.ru/forum/misc/28977-pomogite-napisat-regulyarnoe-vyrazhenie.html)

denfer12 09.06.2012 16:11

Помогите написать регулярное выражение
 
Проверка имени и фамилии (проверка правильности ввода, включая ввод имени и фамилии через пробел и с большой буквы) :help: :help: :help: :help:

Deff 09.06.2012 17:22

<script type="text/javascript">
function CallError(){
 alert('Некорректный Ввод Имени/Фамилии!')
 //setTimeout('FIO_Tst_()',200) //Если нужно зациклить
}
function FIO_Tst_(){
var NamAndFam = prompt("Введите Имя Фамилию,\nчерез пробел и с большой буквы", 'Иван Денфер');
NamAndFam = NamAndFam.replace(/^[\s]*([^\s].*[^\s])[\s]*/ig,'$1')
NamFamArr=NamAndFam.split(/[\s]+/g);
if(NamFamArr.length!=2||NamFamArr[0].length<1||NamFamArr[1].length<1){CallError();return false}
if(NamFamArr[0].search(/^[А-ЯЁ][а-яё]*$/g)!=0){CallError();return false}
if(NamFamArr[1].search(/^[А-ЯЁ][а-яё]*$/g)!=0){CallError();return false}
NamAndFam=NamFamArr[0]+' '+NamFamArr[1];
return NamAndFam}
NamAndFam=FIO_Tst_()
if(NamAndFam) {alert('>'+NamAndFam+'<');}
</script>

dmitriymar 09.06.2012 17:38

/^[А-ЯЁ][а-яё]+ [А-ЯЁ][а-яё]+$/

Deff 09.06.2012 17:54

dmitriymar,
Поправил, Спасибо!

devote 09.06.2012 19:27

var name = prompt("Введите Имя Фамилию,\nчерез пробел и с большой буквы", 'Иван Денфер');

var test = ( name = (name + "").replace( /^\s+|\s(?=\s)|\s+$/g, '' ) ).
    replace( /([^\s]{1})(.*?(\s|$))/ig, function( all, firstChar, otherChar ) {

    return ( firstChar.toUpperCase() + otherChar.toLowerCase() ).replace( /[^\wа-яё\s]+/ig, '' );
});

if ( test !== name || test.split( " " ).length != 2 ) {
    alert( "Все плохо!"  );
}

Aetae 09.06.2012 19:33

devote,
Меня зовут #$#%@#% 453465376 .

devote 09.06.2012 19:41

Цитата:

Сообщение от Aetae
devote,
Меня зовут #$#%@#% 453465376 .

поправил

Deff 09.06.2012 19:48

devote,
Красиво, но модифицируецо хуже, к примеру, при добавке Отчества
Чуть менее понятно для начинающего...?
*Типо обсуждения

Aetae 09.06.2012 19:48

devote,
Меня зовут ______ 007 .

А вообще задача дуратская и сферическия в вакууме.
Например вдруг меня зовут Heinrich Krüger?

devote 09.06.2012 19:52

а можно вообще все упростить:
var name = prompt("Введите Имя Фамилию,\nчерез пробел и с большой буквы", 'Иван Денфер');

if ( !/^[А-ЯЁ][а-яё]+ [А-ЯЁ][а-яё]+$/g.test( name ) ) {
    alert( "Все плохо!" );
}


Часовой пояс GMT +3, время: 07:58.