You should use the helping site of validation – https://codex.wordpress.org/Data_Validation
I think in your context is wp_kses
the right function. You can allow html tags. The function have a lot of possibilities to use it with custom requirements.
A small example to fast usage:
$allowed_html = array(
'a' => array(
'href' => array(),
'title' => array()
),
'br' => array(),
);
$my_filtered_string = wp_kses( $string, $allowed_html, $allowed_protocols = array() );
Small words on the end about performance. The function is hungry, you should use it carefully. More about this include values from benchmarks can you find in this post.