PDA

Просмотр полной версии : RegExp проверка ФИО


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

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 (http://help.adobe.com/ru_RU/AS3LCR/Flex_4.0/RegExp.html#RegExp()).В регулярном выражении, которое определяется методом конструктора RegExp(), чтобы воспользоваться метапоследовательностью, которая начинается с символа обратной косой черты (\) (например, \d, что соответствует любой цифре), дважды введите символ обратной косой черты. Например, эквивалентными являются следующие два регулярных выражения:
var re1:RegExp = new RegExp("\\d+", "");
var re2:RegExp = /\d/;И не забывайте про RegExp.test().

greenhill
11.05.2010, 17:51
Спасибо большое!
[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
var pattern:RegExp = new RegExp("[a-zA-Z]+\\s+[a-zA-Z]+\\s+[a-zA-Z]$", "i");

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

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

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

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

если ввести

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

greenhill
11.05.2010, 18:44
большое спасибо, работает!