Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярка для отрицательного числа
 
 автор: oldOld   (09.10.2012 в 08:01)   письмо автору
 
 

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

if(!(/[0-9]+/.test(str))){alert('не число');};

не хочет

if(!(/^\-?[0-9]+/.test(this.innerHTML))){};

  Ответить  
 
 автор: cheops   (09.10.2012 в 10:45)   письмо автору
 
   для: oldOld   (09.10.2012 в 08:01)
 

Да вроде работает, а что находится в this.innerHTML? Выведите значение при помощи alert()?

  Ответить  
 
 автор: ЯСА   (09.10.2012 в 10:49)   письмо автору
 
   для: oldOld   (09.10.2012 в 08:01)
 

Сохраните где-нить эту табличку действия квантификаторов:
*     - ноль или несколько совпадений
+     - одно или несколько совпадений
?     - ноль или одно совпадение
{n}   - ровно n совпадений
{n,}  - не менее n совпадений
{n,m} - от n до m совпадений

1) у вас по условию минус может быть один или не быть вовсе
значит записываем в начале \-?

2) далее "не менее одной цифры"
значит, \d*

3) соединяем вместе \-?\d*

  Ответить  
 
 автор: oldOld   (09.10.2012 в 20:30)   письмо автору
 
   для: ЯСА   (09.10.2012 в 10:49)
 

Спасибо, у меня по регулярке натаскано и распечатано много разных сайтов.

this это див в который вводятся данные, вместо поля.

Вы предлагаете тоже что и у меня, увы но это не работает.
Минус может быть только один и только первым в строке. Отрицательное число!
Пока еще актуально.

  Ответить  
 
 автор: ЯСА   (09.10.2012 в 20:42)   письмо автору
 
   для: oldOld   (09.10.2012 в 20:30)
 

работает
<div id="d0">xx</div>
<span id="d1">23</span>
<b id="d2">-1</b>
<u id="d3">-367890</u>

<script>
(function myFunc ()
{
for (var j = 0; j < 4; j++)
if (!(/^\-?\d+/.test (document.getElementById ('d' + j).innerHTML))) alert ('НЕ число'); 
else alert ('число');
}) ();
</script>

полагаю, что в итоге выяснится, что
-- или вы пытаетесь прочитать innerHTML у элемента формы (вместо чтения его value)
-- или "для красоты" код у вас написан с отступами и переносами строк, и, соответственно, первым символом будет пробельный \s

  Ответить  
 
 автор: oldOld   (10.10.2012 в 08:18)   письмо автору
 
   для: ЯСА   (09.10.2012 в 20:42)
 

Увы, проходит любое количество минусов и буквы
<div id="d0">xx</div> не число
<span id="d1">23</span> число
<b id="d2">-1-</b> число??????
<u id="d3">-36-78-9uuuuuuu0</u> число?????

А по поводу " в итоге выяснится", ну не на столько я начинающий, а то что забыл сказать что в этот элемент идет ввод с клавиатуры, каюсь.

А тем кто действительно начинающий хочу сказать, что пример ЯСА работать не будет, пока функции онлоад не дадите.
onload=function(){};



сделал страничку и тестил именно этот код в лисе, опере, ие6, кому не лень проверьте
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<title>w121</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<link rel="stylesheet" type="text/css" href="test_1.css">
<script type="text/javascript" src="test_1.js"></script>
<script type="text/javascript">
(onload=function(){ 
var j=5, s;
while(j--){
if(j==4){s=document.getElementById('dw'+j).value;}
else{s=document.getElementById('dw'+j).innerHTML;};
if(!(/^\-?\d+/.test(s))){
alert(s+' НЕ число'+' '+j);}
else{alert(s+' число'+' '+j);}
};
}) ();
</script>
</head>

<body>

<div id="dw0">xx</div> 
<span id="dw1">23</span> <br>
<b id="dw2">-1-</b> <br>
<u id="dw3">-36-78-9uuuuuuu0</u><br>
<input type="text" value="8-90uu" id="dw4">

</body>
</html>


ну и где собака зарыта?

  Ответить  
 
 автор: ЯСА   (10.10.2012 в 08:45)   письмо автору
 
   для: oldOld   (10.10.2012 в 08:18)
 

где в вашем стартовом топике хоть что-то о "продолжении"?
вы озвучили про минус и про минимум одну цифру
дальше у вас могла быть десятичная точка, символ e (для чисел в экспоненциальном формате) и вообще всё что угодно

я свою функцию заключил в исполняемую группу () (); (т,е. сделал её "чёрным ящиком") и свой скриптовой блок поместил после всех тегов, кои в функции обрабатываются
так что всё прекрасно работает и никакого onload'a здесь не надо
------

по сути:
если вам надо, чтобы ВСЯ строка была именно целым числом (любым целым - и отрицательным, и нулём, и положительным) - так об этом и надо было написать в стартовом сообщении

к регулярке в этом случае следует просто добавить мнимый символ конца строки, вот так:
if (!(/^\-?\d+$/.test (document.getElementById ('d' + j).innerHTML)))
              ^

[поправлено модератором]

  Ответить  
 
 автор: oldOld   (10.10.2012 в 20:33)   письмо автору
 
   для: ЯСА   (10.10.2012 в 08:45)
 

Где написано что ваш скрипт нужно нужно располагать в body после всех тегов?, нормальные люди в head скрипт кладут.
И про замыкания я знаю.

А за код спасибо, заработало.

[поправлено модератором]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования