Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   RegExp проверка ФИО (http://www.flasher.ru/forum/showthread.php?t=139789)

greenhill 11.05.2010 17:33

RegExp проверка ФИО
 
Здравствуйте, подскажите почему символ пробела не читается?
Как сделать проверку на два пробела между Ф \ И и И \О ?

Код AS3:

function informalizeGreeting(str:String):Boolean {
            var pattern:RegExp = new RegExp("[a-zA-Z]+\s", "i");
            var result:Object = pattern.exec(str);
                        if(result == null) {
                        return false;
                }
                return true;
        }
var formalGreeting:String = "Green ";// false
            trace(informalizeGreeting(formalGreeting));


MrPoma 11.05.2010 17:44

Конструктор RegExp.
Цитата:

В регулярном выражении, которое определяется методом конструктора RegExp(), чтобы воспользоваться метапоследовательностью, которая начинается с символа обратной косой черты (\) (например, \d, что соответствует любой цифре), дважды введите символ обратной косой черты. Например, эквивалентными являются следующие два регулярных выражения:
Код AS3:

var re1:RegExp = new RegExp("\\d+", ""); 
        var re2:RegExp = /\d/;


И не забывайте про RegExp.test().

greenhill 11.05.2010 17:51

Спасибо большое!
Код AS3:

[a-zA-Z]+\\s+[a-zA-Z]+\\s+[a-zA-Z]

еще вопрос: что надо ввести, чтоб после последнего слова ничего нельзя было бы ввести? То есть если я пишу Green Yellow Brown Black, то выдает true

leofit 11.05.2010 17:58

символ $ в конце строки, это если про парсер

greenhill 11.05.2010 17:59

Код AS3:

var pattern:RegExp = new RegExp("[a-zA-Z]+\\s+[a-zA-Z]+\\s+[a-zA-Z]$", "i");

вот так не работает

MrPoma 11.05.2010 18:04

Цитата:

Сообщение от greenhill (Сообщение 907460)
что надо ввести, чтоб после последнего слова ничего нельзя было бы ввести? То есть если я пишу Green Yellow Brown Black, то выдает true

Не понял вопрос.

greenhill 11.05.2010 18:06

Код AS3:

var pattern:RegExp = new RegExp("[a-zA-Z]+\\s+[a-zA-Z]+\\s+[a-zA-Z]$", "i");

если ввести так - не работает. Просто пишет false не смотря на строку

если ввести

Код AS3:

var pattern:RegExp = new RegExp("[a-zA-Z]+\\s+[a-zA-Z]+\\s+[a-zA-Z]+$", "i");

то работает , можно ввести ФИО, но можно после последнего слова вводить еще что-угодно и вернет true, вот как закрыть ?

Добавлено через 17 минут
В общем, как ввести не более трех слов :) ?

MrPoma 11.05.2010 18:32

Часть строки совпадает с шаблоном - вот и true. Можно методом exec() выдернуть совпавшую с шаблоном строку, которая и будет ФИОм.

greenhill 11.05.2010 18:33

То есть ввести ограничение на 4е слово я никак не могу?

Zebestov 11.05.2010 18:42

Код AS3:

var p:RegExp = /^([a-zA-Z]+\s+[a-zA-Z]+\s+[a-zA-Z]+)$/;
trace(p.test("one two three"));                // true
trace(p.test("one two three four"));        // false



Часовой пояс GMT +4, время: 20:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.