Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не работает regexp test (https://javascript.ru/forum/misc/26586-ne-rabotaet-regexp-test.html)

asmend 14.03.2012 04:12

не работает regexp test
 
var str='0123456789';
var re=/(?!34)/;

if (re.test(str))
alert('Yes');
else
alert('No');


почему в результате получается в итоге true всегда? Должно же быть true если только в строке не окажется 34.

devote 14.03.2012 05:10

var str='0123456789';
if ( str.indexOf('34') == -1 )
alert('Yes');
else
alert('No');

asmend 14.03.2012 05:15

Так не подойдет, это я для примера написал, нужно как-то заставить работать тот пример

devote 14.03.2012 05:23

var str='0123456789';
var re=/34/;
 
if (!re.test(str))
alert('Yes');
else
alert('No');

asmend 14.03.2012 05:34

К сожалению так тоже не подойдет ))
Нужно именно что бы не было определенного слова в строке

Pavel M. 14.03.2012 10:55

Цитата:

Сообщение от asmend
Должно же быть true если только в строке не окажется 34.

поменяйте на позитивный просмотр вперед - все получится

var str='0123456789',
	re=/(?=34)/;
 
if (re.test(str))
  alert('В строке есть 34');
else
  alert('В строке нет 34');


str='012356789';
 
if (re.test(str))
  alert('В строке есть 34');
else
  alert('В строке нет 34');

asmend 14.03.2012 16:40

Цитата:

поменяйте на позитивный просмотр вперед - все получится
так заработало, но мне еще нужно указать то что должно идти после 34, и тогда опять перетсает работать.


var str='0123456789';
var re=/(?=34)56/;

if (re.test(str))
alert('Yes');
else
alert('No');

asmend 14.03.2012 22:13

Нужно что бы этот пример заработал как и должен. Если в строке перед "56" нет "34", то возвращал true. Если в строке перед "56" есть "34" то false. Я не понимаю почему это не работает

var str='0123456789';
var re=/(?!34)56/;
if (re.test(str))
alert('Yes');
else
alert('No');

asmend 14.03.2012 22:14

Так же как я писал это нужно сделать обязательно с помощью regexp test и не меняя возвращаемого результата на противоположный (имею ввиду не делать if (!re.test(str)) )

devote 14.03.2012 23:48

asmend,
ну тогда тебе смело могу сказать что в регах нет возможности проверять отрицания.


Часовой пояс GMT +3, время: 23:07.