|
|
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Есть форма, поля которой перед отправкой проверяются правильность заполнения. <div id='div_main'> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" onsubmit="return datasubmit()"> <h2 id='head'>Карточка</h2> <fieldset style="border-color: border-color: Cornsilk; border-style:groove"> <p id='p1'><em class="em">Дата получения документов: <input type="text" id="date" name="daterec" size="10"/></em> <em class='sp1'>Документы получил: <select id="drec" name="docrec"> <? foreach($asotr as $sotr) { $id=$sotr['id']; $fio=$sotr['fio']; echo "<option value='".$id."'>".$fio."</option>"; } ?> </select> </em> </p> <p id="p2"><em class="em">Убыток №: <input type="text" id="ilos" name="los" size="20"/></em></p> </form> вот скрипты проверки: <scrript> //проверка правильности ввода данных перед отправкой на сервер function datasubmit(){ var numerr=0; var strerr="Не верно заполнены поля:"; str=document.getElementById('date').value; var err=["дата получения документов"] function TstDate(){ str2=str.split("."); if(str2.length!=3){return false;} str2=str2[2] +'-'+ str2[1]+'-'+ str2[0]; if(new Date(str2)=='Invalid Date'){return false;} return str; } //проверим дату получения документов var S=TstDate() if(S){err.splice(0,1); // alert(str); } else { numerr++; strerr+=err; } // "Документы получил" var err=[" документы получил"]; if (document.getElementById('drec').value==0) { numerr++; strerr+=err; } //номер убытка function ChechLos(expr) { // var objRegExp = new RegExp("(\d\d*)-(\d\d*)-(\d\d\d\d*/)(\d\d|\d\d*)-(\d\d*)/(\d\d|[0-9]*)","i"); var objRegExp = new RegExp("(\d*)-(\d*)-(\d*)/(\d*)-(d*)/(\d*)","i"); return objRegExp.Test(expr); } str=document.getElementById('ilos').value; alert(str); if (CheckLos(str) alert("Совпало"); else alert("не совпало"); //если ошибок нет, отправим форму if (numerr==0) return true; else { alert(strerr); return false; } } </script> С проверкой первых двух полей проблем нет. Все отрабатывает как надо. Проблемы вот здесь: //номер убытка function ChechLos(expr) { var objRegExp = new RegExp("(\d\d*)-(\d\d*)-(\d\d\d\d*/)(\d\d|\d\d*)-(\d\d*)/(\d\d|[0-9]*)","i"); return objRegExp.Test(expr); } str=document.getElementById('ilos').value; alert(str); if (CheckLos(str) alert("Совпало"); else alert("не совпало"); Как только идет обращение к var objRegExp = new RegExp("(\d\d*)-(\d\d*)-(\d\d\d\d*/)(\d\d|\d\d*)-(\d\d*)/(\d\d|[0-9]*)","i"); выполнение скрипта прекращается, и происходит отправка данных и обнуление полей. Когда обращения к этой строке нет, скрипт отрабатывает нормально. В чем проблема? Это регулярное выражение уже давно работает в VB NET. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 14:28 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Константин1969, имя метода - с маленькой буквы надо. Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 15:25 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
скукотища, не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 15:59 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 16:02 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Яростный Меч, Тоже самое. Такое ощущение, что функция возвращает false. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 16:18 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Константин1969Яростный Меч, Тоже самое. Такое ощущение, что функция возвращает false.Не доверяйте ощущениям. Доверяйте пошаговой отладке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 16:59 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
var objRegExp = new RegExp("(\d\d*)-(\d\d*)-(\d\d\d\d*/)(\d\d|\d\d*)-(\d\d*)/(\d\d|[0-9]*)","i"); А на чем проверяете регулярное выражение? Примеры вводимых значений есть? Может, регулярное выражение упростить? Я так понимаю, что \d\d* - это у вас число, которое может встречаться больше одного раза. new RegExp("(\d+)-(\d+)-(\d{3,})/(\d+)-(\d+)/(\d*)","i"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2015, 18:18 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Да и в "i" смысла нет, если там одни числа. Можно убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2015, 18:23 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
yelena, Номера дел типа: 71-1234/15 или 191-171-12345/14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 08:22 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 12:42 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
yelena, Спасибо!!! Не пойму только, почему в JavaScript не работает регулярное выражение для VBScript. Функция проверки номеров дел взята оттуда один к одному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 13:36 |
|
||
|
Проблема с RegExp в JavaScript
|
|||
|---|---|---|---|
|
#18+
Константин1969Не пойму только, почему в JavaScript не работает регулярное выражение для VBScript. Функция проверки номеров дел взята оттуда один к одному. Вероятно из-за вот чего: "При создании регулярного выражения следует учитывать, что заключение его в кавычки влечет за собой необходимость использовать escape-последовательности, как и в любой другой строковой константе. Например, следующие два выражения эквивалентны: var re = /\w+/g; var re = new RegExp("\\w+", "g"); // В строке '\' должно заменяться на '\\'" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38983286&tid=1445936]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 442ms |

| 0 / 0 |
