forum.bitel.ru http://forum.bitel.ru/ |
|
regex в скрипте валидации http://forum.bitel.ru/viewtopic.php?f=1&t=1732 |
Страница 1 из 1 |
Автор: | a0d75 [ 17 дек 2008, 16:17 ] |
Заголовок сообщения: | regex в скрипте валидации |
Подскажите пожалуйста, как использовать regex в скрипте валидации? В договоре есть текстовое поле "IP адрес", хочу чтобы оно проверялось на соответствие следующему regex: ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ |
Автор: | snark [ 17 дек 2008, 16:55 ] |
Заголовок сообщения: | |
как нить так: Код: import java.util.*; где 10 - код IP адреса
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; } } } P.S. регексп конечно никудышный, т.к. под него попадет любой IP адрес, но кто мешает его переписать? ![]() |
Автор: | a0d75 [ 17 дек 2008, 18:39 ] |
Заголовок сообщения: | |
Спасибо, однако почему-то не работает ![]() Цитата: 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 |
Автор: | snark [ 17 дек 2008, 19:16 ] |
Заголовок сообщения: | |
скорее всего слеши ... поправьте так: Код: IP_PARAM_RE = "[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}";
|
Автор: | a0d75 [ 17 дек 2008, 20:50 ] |
Заголовок сообщения: | |
пробовал, к сожалению не они ![]() Цитата: 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) ... |
Автор: | snark [ 17 дек 2008, 21:16 ] |
Заголовок сообщения: | |
на каком событии висит код? у меня прекрасно тестит регекспами мобильные телефоны на событии "Перед изменением параметра договора", а у Вас где оно? случаем не в редакторе параметров, там где можно валидацию написать? ![]() |
Автор: | Amir [ 17 дек 2008, 21:51 ] |
Заголовок сообщения: | |
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; } } //} |
Автор: | snark [ 17 дек 2008, 22:02 ] |
Заголовок сообщения: | |
а если несколько параметров проверять? |
Автор: | a0d75 [ 18 дек 2008, 11:51 ] |
Заголовок сообщения: | |
snark писал(а): на каком событии висит код? у меня прекрасно тестит регекспами мобильные телефоны на событии "Перед изменением параметра договора", а у Вас где оно? случаем не в редакторе параметров, там где можно валидацию написать?
![]() спасибо ![]() |
Автор: | snark [ 18 дек 2008, 16:53 ] |
Заголовок сообщения: | |
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; } } } ![]() |
Автор: | stark [ 19 дек 2008, 13:27 ] |
Заголовок сообщения: | |
2 snark - закиньте в wiki, плиз |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |