イスタンブール行きたい

たまに書きたくなります

【React】テキストからURL、改行を探してaタグ、brタグに変換

地味にちょっと苦労したのでメモ チャットUIみたいなやつで、テキスト中にURLが存在すれば色を変えたかったのでclassをつけるためaタグにしたかったのと、\nが存在すれば<br>に変換したかった

const URL_REGEXP_CONTAINS = /(https?:\/\/[\w/:%#\$&\?\(\)~\.=\+\-]+)/g
const NEW_LINE_REGEXP = /(\n)/g

const textArray = text.split(URL_REGEXP_CONTAINS).map(t => {
            return t.split(NEW_LINE_REGEXP)
}).flat()

 return textArray.map(t => {
    if (NEW_LINE_REGEXP.test(t)) {
        return React.createElement('br')
    }
    if (URL_REGEXP.test(t)) {
        return React.createElement('a', {
            href: t,
            target: "_blank",
            referrer: "noreferrer",
                style: {
                    "color": "#f32840",
                    "text-decoration": "underline",
                    "text-decoration-color": "#f32840",
                }
        }, t)
    }
    return t
})