Я работаю в компании, проводящей исследования рынка, и мы должны фильтровать эти типы ввода в любое время. Вы слишком усложняете это. Просто разделите не-буквенно-цифровые символы и посмотрите, есть ли расширение.
Для дальнейшего анализа вы можете подписаться на одного из многих поставщиков, который предоставит вам доступ к базе данных действительных номеров, а также сообщит вам, если они стационарные или мобильные телефоны, отключены и т. д. Это стоит денег.
Это дублирующий вопрос: Рендеринг необработанного html с реагированием
Попробуйте это:
return (
<div style={{background: 'red', width: '300px', height: '300px'}}>
<h1>Hello</h1>
<button onClick={this.fetchHTML}>Click me</button>
<div dangerouslySetInnerHTML={this.createMarkup()} />;
</div> );
...
createMarkup() {
return {__html: this.state.note_html};
}