JSFiddle - React, Tailwind, and code Playground
HTML
<h4>基本的に、文字列の先頭がシャープで、前後にスペースがあればタグとして認定</h4>
<p>【A】スペースないためタグもなし</p>
<section>
<textarea type="text" class="box">こんにちは#良い天気ですね。</textarea>
<div>▶</div>
<div class="box">こんにちは#良い天気ですね。</div>
</section>
<hr>
<p>【B】シャープ直前のスペースがあるのてタグとして認定</p>
<section>
<textarea type="text" class="box">こんにちは #良い天気ですね。</textarea>
<div>▶</div>
<div class="box">こんにちは <span>#良い天気ですね。</span></div>
</section>
<hr>
<p>【C】シャープ直前のスペースと文字列直後のスペースの範囲をタグとして認定</p>
<section>
<textarea type="text" class="box">こんにちは #良い天気 ですね。</textarea>
<div>▶</div>
<div class="box">こんにちは <span>#良い天気</span> ですね。</div>
</section>
<h4>例外的に、スペースが不要なケースは次の通りです</h4>
<p>【D】シャープ直前が記号か行頭の場合は、シャープ直前のスペースが不要でタグとして認定</p>
<section>
<textarea type="text" class="box">こんにちは。#良い天気 ですね。まったく!#その通り です。 #明日 は雨かも。</textarea>
<div>▶</div>
<div class="box">こんにちは。<span>#良い天気</span> ですね。まったく!<span>#その通り</span> です。<br><span>#明日</span> は雨かも。</div>
</section>
<hr>
<p>【E】texarea先頭ならシャープ直前のスペースが不要で、末尾は文字列直後のスペースが不要なので、いずれもタグとして認定</p>
<section>
<textarea type="text" class="box">#良い天気 ですね。今日のごはんはどうしましょうか。寒いから #鍋?</textarea>
<div>▶</div>
<div class="box"><span>#良い天気</span> ですね。今日のごはんはどうしましょうか。寒いから <span>#鍋?</span></div>
</section>
CSS
h4 {
background: #444;
color: white;
padding: 5px 15px;
}
section{
display: flex;
align-items: center;
margin: 0px 0 25px 0;
}
textarea::before {
content: '▶'
}
.box {
border: 1px solid black;
padding: 5px;
border-radius: 5px;
resize: none;
height: 70px;
width: 200px;
white-space: pre-wrap;
font-family: unset;
font-size: 12px;
}
span {
color: red;
font-size: 12px;
}