короче, самый простой способ для тебя - поставить доп модуль
https://community.bablosoft.com/topic/9073/fingerprintswitcher-с-дополнительными-функциями
Need help :) НЕ могу понять тли руки у меня не стого места растут толи как то неправильно работает ReGexp в BAS
Есть такой код
var re = new RegExp("/%(\d+)%/");
var macro = "%2%Test2";
if(re.test(macro)){
var time = macro.match(re);
VAR_MESSAGE_TIMEOUT = parseInt(time[1]);
} else {
VAR_MESSAGE_TIMEOUT = 0;
}
VAR_MESSAGE_TEXT = macro.replace(re, "");
VAR_MESSAGE_ARRAY.splice(0, 1);
Задача его очевидна, взять первое значение из массива, проверить есть ли макос с цифровым значением в нем (прим. %2%) если есть то выдернуть значение и присвоить переменной BAS если нет присвоить ей 0
Так вот, регулярка правильна, в браузере этот код отрабатывает а вот в BAS нет... Получаю всегда false при re.test(macro) а если убераю условие if вообще получаю критическую ошибку О_О почему?
@Qwaros У вас неправильный регексп, для чего нужны эти слэши?
new RegExp("/%(\d+)%/");
паттерн для конструктора RegExp нужно предоставлять в виде строки экранируя только обратные слеши ( \\ )
var re = new RegExp("%(\\d+)%")
Либо использовать литеральный формат:
var re = /%(\d+)%/
тогда обратные слешы можно не экранировать.
[[MESSAGE_ARRAY]] = ["Test1","%2%Test2","3Test3","%5%Test-4"]
//var re = new RegExp("%(\\d+)%");
var re = /%(\d+)%/
var macro = "%2%Test2";
if(re.test(macro)){
var time = macro.match(re);
VAR_MESSAGE_TIMEOUT = parseInt(time[1]);
} else {
VAR_MESSAGE_TIMEOUT = 0;
}
VAR_MESSAGE_TEXT = macro.replace(re, "");
log([[MESSAGE_TEXT]])
log(VAR_MESSAGE_ARRAY.splice(0, 1))
@fox said in ReGexp какой то неправельный:
@Qwaros У вас неправильный регексп, для чего нужны эти слэши?
new RegExp("/%(\d+)%/");паттерн для конструктора RegExp нужно предоставлять в виде строки экранируя только обратные слеши ( \\ )
var re = new RegExp("%(\\d+)%")
Либо использовать литеральный формат:
var re = /%(\d+)%/тогда обратные слешы можно не экранировать.
[[MESSAGE_ARRAY]] = ["Test1","%2%Test2","3Test3","%5%Test-4"] //var re = new RegExp("%(\\d+)%"); var re = /%(\d+)%/ var macro = "%2%Test2"; if(re.test(macro)){ var time = macro.match(re); VAR_MESSAGE_TIMEOUT = parseInt(time[1]); } else { VAR_MESSAGE_TIMEOUT = 0; } VAR_MESSAGE_TEXT = macro.replace(re, ""); log([[MESSAGE_TEXT]]) log(VAR_MESSAGE_ARRAY.splice(0, 1))
руки с жопы... понял :D Спасибо :)))