Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2017, 13:33   #1
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию Регулярное выражение

Всем привет! помогите правильно составить регулярное выражение

/^[A-Za-z0-9]+$/ это выражение разрешает вводить английские буквы и цифры слитно и без пробелов

Мне надо составить выражение в котором можно писать английские буквы и цифры слитно и без пробелов, но нельзя, чтобы были только одни английские буквы.

sdgf3424sdfgsdf234234 - правильно
4563456SDDFSADF43434GHMHK - правильно
343457457754634564 - правильно

sdfasdfasdfasdf - не правильно
IURETYIOWUYER - не правильно
Если помог: Нажми Весы и оставь отзыв!!!
Smagulov85 вне форума Ответить с цитированием
Старый 03.11.2017, 13:58   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Может /^[A-Za-z]+[0-9][A-Za-z0-9]+$/
Black Fregat вне форума Ответить с цитированием
Старый 03.11.2017, 14:12   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Думаю так: /^(?![A-Za-z]+)[A-Za-z0-9]+$/
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 03.11.2017, 14:38   #4
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Спасибо, что отозвались. Щас проверю
Если помог: Нажми Весы и оставь отзыв!!!
Smagulov85 вне форума Ответить с цитированием
Старый 03.11.2017, 14:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Может /^[A-Za-z]+[0-9][A-Za-z0-9]+$/
считает, что 9999assa1 неверное.


Цитата:
Сообщение от Pavia Посмотреть сообщение
Думаю так: /^(?![A-Za-z]+)[A-Za-z0-9]+$/
что-то вообще странно. или я проверять не умею, или оно не работает.

пишу, например, assa2345
чекер говорит, что искомое выражение не найдено.

Кстати, вопрос к ТС: а тут точно нужны регулярные выражения?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2017, 15:09   #6
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Точно! если пользователь будет вводить данные как он хочет то программа сойдет сума.

надо чтобы результаты были как тут

sdgf3424sdfgsdf234234 - правильно
4563456SDDFSADF43434GHMHK - правильно
343457457754634564 - правильно

sdfasdfasdfasdf - не правильно
IURETYIOWUYER - не правильно
Если помог: Нажми Весы и оставь отзыв!!!
Smagulov85 вне форума Ответить с цитированием
Старый 03.11.2017, 15:24   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно же проверить, что есть хоть одна цифра. Вот и проверь после проверки из #1
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.11.2017, 15:25   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

/(?![A-Za-z]+$)[A-Za-z0-9]+/ вот такое проверил онлайн чекером, работает. Однако delphi не поддерживает оператор /?!/
Так что чисто регулярными неполучится.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 03.11.2017, 15:33   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Smagulov85 Посмотреть сообщение
Точно! если пользователь будет вводить данные как он хочет то программа сойдет сума.
Вы меня не поняли. я не против проверки на валидность. Но нужно делать обязательно. Я не уверен, что регулярные выражения могут решить любые СПЕЦИФИЧНЫЕ (как в данном случае) требования.

я примерно про это:
Код:
function InCorrectUserString(S : string):boolean;
var i  : integer;
  isNoDigits : boolean;
begin
    InCorrectUserString := false;
    isNoDigits := true;
    for i:=1 to Length(S) do 
      if S[i] not in ['a'..'z', 'A'..'Z', '0'..'9'] Then Exit
      else
         if  isNoDigits and (S[i] in ['0'..'9']) then isNoDigits := false;

    if isNoDigits then Exit;
    InCorrectUserString  := true
end;
Работать будет быстро. Код простой и очевидный. Сопровождать/изменять легко.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.11.2017, 16:05   #10
Smagulov85
Форумчанин
 
Аватар для Smagulov85
 
Регистрация: 22.11.2009
Сообщений: 142
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Работать будет быстро. Код простой и очевидный. Сопровождать/изменять легко.
Спасибо, но чет не работает

[dcc32 Error] main.pas(707): E2066 Missing operator or semicolon
[dcc32 Error] main.pas(707): E2015 Operator not applicable to this operand type

я тут правда придумал извращение. правда тупа и криво, но работает

procedure TForm1.Button1Click(Sender: TObject);
var
p, n : string;
begin
if ExecRegExpr ('^[A-Za-z0-9]+$', edit2.Text) then begin
p:= BoolToStr(ExecRegExpr ('^[A-Za-z0-9]+$', edit2.Text));
end else begin
p:= BoolToStr(ExecRegExpr ('^[A-Za-z0-9]+$', edit2.Text));
end;
if ExecRegExpr ('^[A-Za-z]+$', edit2.Text) then begin
n:= BoolToStr(ExecRegExpr ('^[A-Za-z]+$', edit2.Text));
end else begin
n:= BoolToStr(ExecRegExpr ('^[A-Za-z]+$', edit2.Text));
end;
if (p='-1') and (n='0') then begin
Label1.Caption:='Верно';
end else begin
Label1.Caption:='не верно';
end;
end;
Если помог: Нажми Весы и оставь отзыв!!!
Smagulov85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение cashmail PHP 3 02.05.2014 14:05
Регулярное выражение KoBaL PHP 0 12.01.2014 13:19
Регулярное выражение sanek_da Помощь студентам 0 23.11.2013 17:17
Регулярное выражение D_E_N Общие вопросы Delphi 5 19.11.2013 17:31
Регулярное выражение kpachbiu PHP 2 08.02.2011 21:36