powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Проблема с RegExp в JavaScript
12 сообщений из 12, страница 1 из 1
Проблема с RegExp в JavaScript
    #38982301
Есть форма, поля которой перед отправкой проверяются правильность заполнения.

<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.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38982395
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин1969,
имя метода - с маленькой буквы надо.
Код: javascript
1.
return objRegExp.test(expr);
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38982450
скукотища,

не помогло
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38982454
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
var objRegExp = /(\d\d*)-(\d\d*)-(\d\d\d\d*\/)(\d\d|\d\d*)-(\d\d*)\/(\d\d|[0-9]*)/i; 
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38982475
Яростный Меч,

Тоже самое. Такое ощущение, что функция возвращает false.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38982536
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин1969Яростный Меч,

Тоже самое. Такое ощущение, что функция возвращает false.Не доверяйте ощущениям. Доверяйте пошаговой отладке.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38983286
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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");
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38983287
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и в "i" смысла нет, если там одни числа. Можно убрать.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38983667
yelena,

Номера дел типа: 71-1234/15 или 191-171-12345/14.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38983910
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<script>
	var re = /^(\d+-){1,2}\d+\/\d{2}$/;
	
	var res = re.test("71");
	alert(res);
	res = re.test("71-789");
	alert(res);
	
	res = re.test("71-1234/15");
	alert(res);
	res = re.test("71-1234/156");
	alert(res);
	
	res = re.test("7191-171-12345/14");
	alert(res);
	res = re.test("7191-171-12345-1571571/14");
	alert(res);
	
	res = re.test("wr-1571571/14");
	alert(res);
</script>
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38983940
yelena, Спасибо!!! Не пойму только, почему в JavaScript не работает регулярное выражение для VBScript. Функция проверки номеров дел взята оттуда один к одному.
...
Рейтинг: 0 / 0
Проблема с RegExp в JavaScript
    #38984967
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин1969Не пойму только, почему в JavaScript не работает регулярное выражение для VBScript. Функция проверки номеров дел взята оттуда один к одному.

Вероятно из-за вот чего:

"При создании регулярного выражения следует учитывать, что заключение его в кавычки влечет за собой необходимость использовать escape-последовательности, как и в любой другой строковой константе. Например, следующие два выражения эквивалентны:

var re = /\w+/g;
var re = new RegExp("\\w+", "g"); // В строке '\' должно заменяться на '\\'"
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Проблема с RegExp в JavaScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]