Eu quero adicionar uma tag (variável) a valores com regex, o padrão funciona bem com PHP, mas tenho problemas para implementá-lo em JavaScript.
O padrão é ( value
é a variável):
/(?!(?:[^<]+>|[^>]+<\/a>))\b(value)\b/is
Eu escapei das barras invertidas:
var str = $("#div").html();
var regex = "/(?!(?:[^<]+>|[^>]+<\\/a>))\\b(" + value + ")\\b/is";
$("#div").html(str.replace(regex, "<a href='#" + value +">" + value + "</a>"));
Mas isso não parece estar certo, eu registrei o padrão e é exatamente o que deveria ser. Alguma ideia?
javascript
regex
string
Borstenhorst
fonte
fonte
value
uma variável?Respostas:
Para criar o regex a partir de uma string, você deve usar o
RegExp
objeto JavaScript .Se você também deseja corresponder / substituir mais de uma vez, deve adicionar o
g
sinalizador (correspondência global) . Aqui está um exemplo:Demonstração do JSFiddle aqui.
No caso geral, escape a string antes de usar como regex:
No entanto, nem toda string é uma regex válida: existem alguns caracteres especiais, como
(
ou[
. Para contornar esse problema, basta escapar da string antes de transformá-la em um regex. Uma função de utilidade para isso está no exemplo abaixo:Demonstração do JSFiddle aqui.
Nota: a regex na pergunta usa o
s
modificador, que não existia no momento da pergunta, mas existe - um sinalizador / modificadors
( dotall ) em JavaScript - hoje .fonte
s
modificador, veja novamente o link MDN na nota de resposta.Se você está tentando usar um valor de variável na expressão, você deve usar o "construtor" RegExp.
fonte
Você não precisa do
"
para definir uma expressão regular, então apenas:Se
value
for uma variável e você quiser uma expressão regular dinâmica, não poderá usar esta notação; use a notação alternativa.String.replace
também aceita strings como entrada, então você pode fazer"fox".replace("fox", "bear");
Alternativo:
Lembre-se de que se
value
contém caracteres de expressões regulares como(
,[
e?
você precisará escapar deles.fonte
Achei este tópico útil - então pensei em adicionar a resposta ao meu próprio problema.
Eu queria editar um arquivo de configuração de banco de dados (datastax cassandra) de um aplicativo de nó em javascript e para uma das configurações no arquivo eu precisava combinar em uma string e, em seguida, substituir a linha seguinte.
Esta foi a minha solução.
Após a execução, ele mudará a configuração do diretório de dados existente para o novo:
arquivo de configuração antes de:
arquivo de configuração após:
fonte
Descobri que tinha que cortar duas vezes o \ b para fazê-lo funcionar. Por exemplo, para remover palavras "1x" de uma string usando uma variável, eu precisava usar:
fonte
Maneira muito mais fácil: use literais de modelo.
fonte
https://jsfiddle.net/9f0mb6Lz/
Espero que isto ajude
fonte