Дмитрий Ч.
218 повідомлень
#9 років тому
Докопался до своей "ошибки", почему регэксп не срабатывает, но всё равно не могу понять, почему так((
матчим номера вм-кошельков: должно быть R и за ним 12 цифр
var wm = 'R123456789012';
я пробежал глазами референс по js regex и вроде как от php/perl оно мало чем отличается. По моим понятиям, должно было бы быть так:
var res = wm.match(/^R\d{12}$/i); - но так вообще ничего не матчит
эксперименты привели к тому, что:
var res = wm.match(/\d{12}/); - заматчит "1" (хотя по моему пониманию должно заматчить "123456789012" )
var res = wm.match(/\d{12}/g); - заматчит "1,2,3,4,5,6,7,8,9,0,1,2" (хотя по моему пониманию опять таки должно заматчить "123456789012" )
хотя написано, что "g - Perform a global match (find all matches rather than stopping after the first match)"

поясните, плиз, кто-то, где я ошибаюсь.
Владимир Р.
3315 повідомлень
#9 років тому
TigerDesign,
Используя объект:
var rexp = new RegExp("^R{12}", "g");
var res = str.match(rexp);

Используя литерал:
var res = str.match(/^R{12}/g);
Дмитрий Ч.
218 повідомлень
#9 років тому
vovka-morkovka, спасибо за ответ.
Вы тестировали и у вас работает?
У меня - ничем не отличается от \d{12} - четко ваш регэксп результат "R1", если добавить $ в конце (а это нужно ведь) - то null
При том, что в онлайн-валидаторах js-регэкспа всё работает так, как и должно бы работать по моей логике...
я сейчас вот подумал - быть может, какие-то js-плагины добавляют какое-то странное поведение?..
Владимир Р.
3315 повідомлень
#9 років тому
TigerDesign,

var wm = "R111111111111"

Используя объект:
var rexp = new RegExp("^R{12}", "g");
var res = wm.match(rexp);


Используя литерал:
var res = wm.match(/^R{12}/g);

Цитата (TigerDesign):
Вы тестировали и у вас работает?
Владимир Р.
3315 повідомлень
#9 років тому
Цитата (TigerDesign):
если добавить $ в конце (а это нужно ведь) - то null
Ничего подобного:
Дмитрий Ч.
218 повідомлень
#9 років тому
Var wm = "R111111111111";
var rexp = new RegExp("^R{12}" );
var res = wm.match(rexp);
alert(res);

результат - "R1"

var wm = "R111111111111";
var rexp = new RegExp("^R{12}$" );
var res = wm.match(rexp);
alert(res);

результат - null

Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0

всё больше склоняюсь к тому, что кто-то где-то меняет как-то поведение рекэкспов, но как-то это странно, да и непонятно даже, в какую сторону меняет и как, чтобы копать куда-то...
Владимир Р.
3315 повідомлень
#9 років тому
FF40:

Дмитрий Ч.
218 повідомлень
#9 років тому
В фаербаге у меня тоже всё ок, а на сайте - беда...
ладно, буду копаться... спасибо...
а ларчик просто открывался...
{12} съедает темплейтер из tpl-ки...
Олег Р.
600 повідомлень
#9 років тому
TigerDesign,
Цитата:
В фаербаге у меня тоже всё ок, а на сайте - беда
а вот это, на самом деле странно.... Более подробно можете про сайт сказать? версия PHP, кодировки, ну т.д.