@Farak1 вообще есть алгоритм левенштейна, для nodejs есть готовые решения
ReGexp какой то неправельный
-
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 Спасибо :)))
