Как использовать значение var в .match в jquery [duplicate]

Очистить и перестроить

. «Чистая» сборки может удалить «мертвую древесину», которая может быть оставлена ​​лежащей рядом с предыдущими сборками, неудачными сборками, неполными сборками и другими проблемами сборки.

В общем случае среда IDE или сборка будет включать в себя некоторую форму «чистой» функции, но это может быть неправильно настроено (например, в ручном файле) или может завершиться неудачей (например, промежуточные или результирующие двоичные файлы - только).

После завершения «очистки» убедитесь, что «чистый» преуспел, и весь сгенерированный промежуточный файл (например, автоматический файл makefile) был успешно удален.

Этот процесс можно рассматривать как конечный вариант, но часто является хорошим первым шагом ; особенно если недавно был добавлен код, связанный с ошибкой (локально или из исходного репозитория).

136
задан Josh Crozier 9 December 2013 в 00:55
поделиться

6 ответов

Чтобы построить регулярное выражение из переменной в JavaScript, вам нужно будет использовать конструктор RegExp со строковым параметром.

function reg(input) {
    var flags;
    //could be any combination of 'g', 'i', and 'm'
    flags = 'g';
    return new RegExp('ReGeX' + input + 'ReGeX', flags);
}

, конечно, это очень наивный пример. Он предполагает, что input был правильно экранирован для регулярного выражения. Если вы имеете дело с пользовательским вводом или просто хотите сделать его более удобным для соответствия специальным символам, вам нужно выполнить специальные символы :

function regexEscape(str) {
    return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
}

function reg(input) {
    var flags;
    //could be any combination of 'g', 'i', and 'm'
    flags = 'g';
    input = regexEscape(input);
    return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
27
ответ дан Community 25 August 2018 в 14:56
поделиться

Вот довольно бесполезная функция, возвращающая значения, обернутые конкретными символами. :)

jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/

function getValsWrappedIn(str,c1,c2){
    var rg = new RegExp("(?<=\\"+c1+")(.*?)(?=\\"+c2+")","g"); 
    return str.match(rg);
    }

var exampleStr = "Something (5) or some time (19) or maybe a (thingy)";
var results =  getValsWrappedIn(exampleStr,"(",")")

// Will return array ["5","19","thingy"]
console.log(results)
0
ответ дан Jakob Sternberg 25 August 2018 в 14:56
поделиться
6
ответ дан Nikita Rybak 25 August 2018 в 14:56
поделиться

, если вы используете шаблоны шаблонов es6 , являются опцией ...

string.replace(new RegExp(`ReGeX${testVar}ReGeX`), "replacement")
2
ответ дан shunryu111 25 August 2018 в 14:56
поделиться

Вы можете использовать объект RegExp:

var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);

Тогда вы можете сконструировать regexstring любым способом.

Вы можете узнать больше об этом здесь .

64
ответ дан steinar 25 August 2018 в 14:56
поделиться

принятый ответ не работает для меня и не следует . Примеры MDN

см. в разделе «Описание» в ссылке

I ' d go со следующим, что он работает для меня:

let stringThatIsGoingToChange = 'findMe';
let flagsYouWant = 'gi' //simple string with flags
let dynamicRegExp = new RegExp(`${stringThatIsGoingToChange}`, 'flagsYouWant')

// that makes dynamicRegExp = /findMe/gi
1
ответ дан Timothy Mitchell 25 August 2018 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: