Então, por exemplo:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Mas é claro que isso não está funcionando :) Existe alguma maneira de fazer isso?
javascript
regex
variables
Adão
fonte
fonte
Respostas:
Atualizar
Por alguns dos comentários, é importante observar que você pode querer escapar da variável se houver potencial para conteúdo malicioso (por exemplo, a variável vem da entrada do usuário)
Atualização do ES6
Em 2019, isso geralmente seria escrito usando uma string de modelo, e o código acima foi atualizado. A resposta original foi:
fonte
regex
expressão/\w+\//i
tornanew RegExp("\\w+/", "i")
Você pode usar o objeto RegExp:
Então você pode construir
regexstring
da maneira que quiser.Você pode ler mais sobre isso aqui .
fonte
Para criar uma expressão regular a partir de uma variável em JavaScript, você precisará usar o
RegExp
construtor com um parâmetro string.claro, este é um exemplo muito ingênuo. Supõe que
input
foi escapado adequadamente para uma expressão regular. Se você está lidando com a entrada do usuário ou simplesmente deseja torná-lo mais conveniente para combinar caracteres especiais, precisará escapar de caracteres especiais :fonte
ReGeX
texto. Então eu usei:return new RegExp(input, flags);
\\
representa um único\
caractere,$&
é a substring correspondente .se você estiver usando literais de modelo es6, é uma opção ...
fonte
^[^\s]{${4},${32}}$
); exportar const validatePassword = value => value.match (newRegExp); ``Você sempre pode dar expressão regular como string, ou seja
"ReGeX" + testVar + "ReGeX"
. Você possivelmente terá que escapar de alguns caracteres dentro de sua string (por exemplo, aspas duplas), mas na maioria dos casos é equivalente.Você também pode usar o
RegExp
construtor para passar sinalizadores ( consulte a documentação ).fonte
Você pode criar expressões regulares em JS de uma das duas maneiras:
/ab{2}/g
new RegExp("ab{2}", "g")
.Literais de expressão regular são constantes e não podem ser usadas com variáveis. Isso pode ser alcançado usando o construtor. A estrutura do construtor RegEx é
Você pode incorporar variáveis como parte do regularExpressionString. Por exemplo,
Isso corresponderá a qualquer aparência do padrão
cdcdcd
.fonte
Aqui está uma função bastante inútil que retorna valores agrupados por caracteres específicos. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
fonte
resposta aceita não funciona para mim e não segue exemplos MDN
consulte a seção "Descrição" no link acima
Eu iria com o seguinte está funcionando para mim:
fonte
Só é necessário preparar a variável de sequência primeiro e depois convertê-la no RegEx.
por exemplo:
Você deseja adicionar
minLength
eMaxLength
com a variável ao RegEx:agora, se você alterar o valor de
MaxLength
ouMinLength
, ele será alterado em todos os RegExs.Espero ser útil. Também sinto muito pelo meu inglês.
fonte