Não , ele não é HTML5 válido, de acordo com o documento de especificação HTML5 do W3C :
Modelo de conteúdo: transparente , mas não deve haver descendente de conteúdo interativo .
O elemento a pode ser agrupado em parágrafos, listas, tabelas e assim por diante, até seções inteiras, desde que não exista conteúdo interativo (por exemplo, botões ou outros links).
Em outras palavras, você pode aninhar qualquer elemento dentro de um, <a>exceto o seguinte:
<a>
<audio>(se o atributo de controles estiver presente)
<button>
<details>
<embed>
<iframe>
<img>(se o atributo usemap estiver presente)
<input>(se o atributo type não estiver no estado oculto )
<keygen>
<label>
<menu>(se o atributo type estiver no estado da barra de ferramentas )
<object>(se o atributo usemap estiver presente)
<select>
<textarea>
<video>(se o atributo de controles estiver presente)
Se você estiver tentando ter um botão vinculado a algum lugar, envolva esse botão dentro de uma <form>tag como:
<form style="display: inline" action="http://example.com/" method="get">
<button>Visit Website</button>
</form>
No entanto, se sua <button>tag é estilizada usando CSS e não se parece com o widget do sistema ... Faça um favor a si mesmo, crie uma nova classe para sua <a>tag e estilize-a da mesma maneira.