Existe uma maneira de usar a correspondência ungreedy em JavaScript para expressões regulares?

StackOverflow https://stackoverflow.com/questions/364014

Pergunta

Gostaria de saber se existe uma maneira de usar a correspondência ungreedy em JavaScript? Eu tentei o U modificador, mas não parece trabalho.

Eu quero escrever uma pequena analisador BBCode em JavaScript, mas sem correspondência ungreedy não é possível (pelo menos tanto quanto eu vê-lo) para fazer algo parecido com isto:

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.*)\[\/b\]/, '<b>$1</b>' );

Mas tal substituição um seria bom, pois não há necessidade de verificar a validade HTML então. marcações não fechadas vai ficar de texto simples.

Foi útil?

Solução

Você pode usar ? após * ou + para torná-lo ungreedy, por exemplo, (.*?)

Outras dicas

Eu estou atrasado, mas eu vou postar o regex de qualquer maneira.

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top