Existe uma maneira de usar a correspondência ungreedy em JavaScript para expressões regulares?
-
21-08-2019 - |
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.
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