BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2025, 00:25

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: regex в скрипте валидации
СообщениеДобавлено: 17 дек 2008, 16:17 
Не в сети

Зарегистрирован: 10 сен 2008, 14:48
Сообщения: 7
Карма: 0
Подскажите пожалуйста, как использовать regex в скрипте валидации? В договоре есть текстовое поле "IP адрес", хочу чтобы оно проверялось на соответствие следующему regex: ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 16:55 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
как нить так:
Код:
import java.util.*;

IP_PARAM_ID = 10;
IP_PARAM_RE = "[0-9]{3}\.[0-9]{3}\.[0-9]{3}\.[0-9]{3}";

paramId = event.getParamId();
value   = event.getValue();

if (paramId == IP_PARAM_ID) {
    if (value.length() > 0) {
        if (!value.matches(IP_PARAM_RE)) {
            event.setError("Неверно записан IP адрес!");
            return;
        }
    }
}
где 10 - код IP адреса

P.S. регексп конечно никудышный, т.к. под него попадет любой IP адрес, но кто мешает его переписать? ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 18:39 
Не в сети

Зарегистрирован: 10 сен 2008, 14:48
Сообщения: 7
Карма: 0
Спасибо, однако почему-то не работает :( В логах ошибка:

Цитата:
ERROR 17.12.2008 15:51:26 Eval error: Sourced file: inline evaluation of: ``import java.util.*; IP_PARAM_ID = 2; IP_PARAM_RE = "[0-9]{3}\.[0-9]{3}\.[0-9] . . . '' Token Parsing Error: Lexical error at line 4, column 25. Encountered: "." (46), after : "\"[0-9]{3}\\"
Sourced file: inline evaluation of: ``import java.util.*; IP_PARAM_ID = 2; IP_PARAM_RE = "[0-9]{3}\.[0-9]{3}\.[0-9] . . . '' Token Parsing Error: Lexical error at line 4, column 25. Encountered: "." (46), after : "\"[0-9]{3}\\": <at unknown location>

at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:158)
at bitel.billing.server.contract.action.ActionUpdateParameterType1.doAction(ActionUpdateParameterType1.java:35)
at bitel.billing.server.Executer.doModule(Executer.java:693)
at bitel.billing.server.Executer.doPost(Executer.java:177)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
INFO 17.12.2008 15:51:26 Process time => 2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 19:16 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
скорее всего слеши ... поправьте так:
Код:
IP_PARAM_RE = "[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}";


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 20:50 
Не в сети

Зарегистрирован: 10 сен 2008, 14:48
Сообщения: 7
Карма: 0
пробовал, к сожалению не они :(

Цитата:
ERROR 17.12.2008 17:47:25 Eval error: Sourced file: inline evaluation of: ``import java.util.*; IP_PARAM_ID = 2; IP_PARAM_RE = "[0-9]{3}\\.[0-9]{3}\\.[0- . . . '' : Error in method invocation: No args method getParamId() not found in class'bitel.billing.server.script.bean.event.ValidateTextParamEvent'
Sourced file: inline evaluation of: ``import java.util.*; IP_PARAM_ID = 2; IP_PARAM_RE = "[0-9]{3}\\.[0-9]{3}\\.[0- . . . '' : Error in method invocation: No args method getParamId() not found in class'bitel.billing.server.script.bean.event.ValidateTextParamEvent' : at Line: 6 : in file: inline evaluation of: ``import java.util.*; IP_PARAM_ID = 2; IP_PARAM_RE = "[0-9]{3}\\.[0-9]{3}\\.[0- . . . '' : event .getParamId ( )

at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHAssignment.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 21:16 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
на каком событии висит код? у меня прекрасно тестит регекспами мобильные телефоны на событии "Перед изменением параметра договора", а у Вас где оно? случаем не в редакторе параметров, там где можно валидацию написать? ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 21:51 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
paramId = event.getParamId();
if (paramId == IP_PARAM_ID) {
не нужны, так как проверка привязывается к параметру.
Код:
import java.util.*;

//IP_PARAM_ID = 10;
IP_PARAM_RE = "[0-9]{3}\.[0-9]{3}\.[0-9]{3}\.[0-9]{3}";

//paramId = event.getParamId();
value   = event.getValue();

//if (paramId == IP_PARAM_ID) {
    if (value.length() > 0) {
        if (!value.matches(IP_PARAM_RE)) {
            event.setError("Неверно записан IP адрес!");
            return;
        }
    }
//}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 дек 2008, 22:02 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
а если несколько параметров проверять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 дек 2008, 11:51 
Не в сети

Зарегистрирован: 10 сен 2008, 14:48
Сообщения: 7
Карма: 0
snark писал(а):
на каком событии висит код? у меня прекрасно тестит регекспами мобильные телефоны на событии "Перед изменением параметра договора", а у Вас где оно? случаем не в редакторе параметров, там где можно валидацию написать? ;)


спасибо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 дек 2008, 16:53 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
a0d75 писал(а):
спасибо :)

незачто в общем то ...

P.S. в догонку, вдруг кому пригодится - скрипт проверяет правильность ввода телефонного номера с кодом 4, если это домашний (у меня 5-ти значные телефоны), то должен вводиться в одном формате, если это сотовый - то в другом ...
Код:
import java.util.*;

PHONE_PARAM_ID        = 4;
PHONE_PARAM_RE_HOME   = "[0-9]{1}-[0-9]{2}-[0-9]{2}";
PHONE_PARAM_RE_MOBILE = "\\+7 \\([0-9]{3}\\) [0-9]{3}-[0-9]{2}-[0-9]{2}";

paramId = event.getParamId();
value   = event.getValue();

if (paramId == PHONE_PARAM_ID) {
    PHONE_LENGTH = value.length();
    if (PHONE_LENGTH > 0) {
        if (PHONE_LENGTH <= 7) {
            if (!value.matches(PHONE_PARAM_RE_HOME)) {
                event.setError("Неверно записан номер домашнего телефона!\nНомер должен быть записан в формате: 1-12-12");
                return;
            }
        } else if (PHONE_LENGTH >= 10 && PHONE_LENGTH <= 18) {
            if (!value.matches(PHONE_PARAM_RE_MOBILE)) {
                event.setError("Неверно записан номер мобильного телефона!\nНомер должен быть записан в формате: +7 (123) 123-12-12");
                return;
            }
        } else {
            event.setError("Не надо писать что попало!");
            return;
        }
    }
}
просто удобно когда в распечатках одинаковый формат :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 дек 2008, 13:27 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
2 snark - закиньте в wiki, плиз


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.103s | 38 Queries | GZIP : On ]