Pergunta

O JavaScript Expressões regulares suporta referências na classe de personagens?

Eu quero fazer algo assim:

htmlString.replace(/attribute_name=(['"])[^\1]*\1/,'')

Mas isso não funciona. Isso faz:

htmlString.replace(/attribute_name=(['"])[^'"]*\1/,'')

Infelizmente, meu atributo_name pode conter apóstrofos ou citações, então preciso expor o personagem de citação real do interior do atributo, mas deixe o outro. Não posso ter certeza de qual é usado. Posso assumir com segurança que as citações estão em forma de entidade, mas ainda assim pode haver apóstrofes dentro:

<div attribute_name="John's car" class="someClass"></div>
<div attribute_name='some &quot;quoted text&quot;' class="someClass"></div>

Não consigo prever qual de "ou 'será usado em torno do atributo.

Como se livrar do atributo e deixar o atributo de classe em paz (não cortado muito)?

Contexto: estou recebendo o HTML por $ ('TemplateContainer'). Innerhtml. Eu tenho que modificar esse HTML antes de inseri -lo na página novamente. Eu tenho que cortar alguns Attibutes não padrão e todos os atributos de ID.

Foi útil?

Solução

Você seria muito melhor usando o DOM ou algum outro modelo real projetado para conteúdo hierárquico. Dito isto, se você devo Use Regex, a maneira mais simples provavelmente seria usar apenas um | (Ou) em vez disso.

htmlString.replace(/attribute_name=('[^']*'|"[^"]*")/,'')

Outras dicas

Concordo com as outras respostas, pois não acho que os atributos sejam o lugar para fazer esse tipo de coisa, mas também tenho receio de recomendar o DOM. Sinto -me sujo quando faço isso, não sei por quê.

Normalmente, tentarei usar um objeto JavaScript para armazenar meus dados e, em seguida, referenciá-lo usando teclas bem formadas, etc. dar de ombros É mais trabalho, mas é o IMHO mais limpo. Mas, definitivamente, não é a única maneira de realizar a tarefa.

Quanto à sua pergunta, você também pode usar a correspondência não-greedora em JavaScript e seria assim:

htmlString.replace(/ ?attribute_name=(['"]).*?\1/, '')

Expressões regulares em JavaScript | Evolt.org

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top