Что вы можете сделать, это сначала удалить все специальные символы в string
, прежде чем проверять regex
:
.replace(/[^\w\s]/gi, '')
, чтобы удалить все специальные символы из вашего string
. /do.+drugs/
в качестве регулярного выражения, чтобы проверить, соответствует ли строка вашему желаемому шаблону. Демо:
let inputs = ["Everyone go do drugs",
"Everyone go d[o] dru]gs!",
"Everyone go do[heyyo]dr--ugs"
];
inputs = inputs.map(i => i.replace(/[^\w\s]/gi, ''));
inputs.forEach(i => {
console.log(i + ": " + i.match(/do.+drugs/));
});
Если объект X имеет обработчик событий, цель которого является объектом Y, то возразите X являющийся живым, означает, что объект Y не может быть собран "мусор". Это не мешает объекту X быть собранным "мусор".
Обычно, когда что-то расположено, это станет мусором довольно скоро так или иначе, что означает, что у Вас нет проблемы.
Проблема с событиями и GC состоит в том, если Вы забываете удалять подписанный обработчик из другого объекта - т.е. у Вас есть слушатель, который расположен, но никогда не будет собираться "мусор", потому что существует все еще ссылка на него от события в другом объекте.
Вы не можете.
Точно так же, как Вы не можете создать анонимный тип за пределами его объема (за исключением некоторых приемов компилятора).
Вот почему это назвало анонимным.
Необходимо сохранить ссылку где-нибудь... или использовать отражение.
Я думаю, что проблема - Вы, кажется, происхождение предположения, что присваивание делегата к событию объекта препятствует тому, чтобы он был GCed.
Это как простой оператор не верно.
После этих слов воспринятая проблема исчезает.
Первоначально в сборке "мусора" все - мусор. GC пробегает каждую вещь, в настоящее время доступную глобально и на каждом стеке и от этих тех других объектов, на которые они ссылаются и так далее, отмечая каждого как не мусор.
Как такому процессу построения графика удалось бы прибыть в этот объект?