ハイフンやマイナスやダッシュや長音記号らしき Unicode 文字をハイフンマイナスに正規化する

export function normalizeHyphenLike(str) {
  // U+002D Hyphen-Minus
  // U+00AD Soft Hyphen
  // U+02D7 Modifier Letter Minus Sign
  // U+2010 Hyphen
  // U+2011 Non-Breaking Hyphen
  // U+2012 Figure Dash
  // U+2013 En Dash
  // U+2014 Em Dash
  // U+2015 Horizontal Bar
  // U+2043 Hyphen Bullet
  // U+2212 Minus Sign
  // U+2796 Heavy Minus Sign
  // U+2E3A Two-Em Dash
  // U+2E3B Three-Em Dash
  // U+30FC Katakana-Hiragana Prolonged Sound Mark
  // U+FE58 Small Em Dash
  // U+FE63 Small Hyphen-Minus
  // U+FF0D Fullwidth Hyphen-Minus
  // U+FF70 Halfwidth Katakana-Hiragana Prolonged Sound Mark
  return str.replace(
    /[\u00AD\u02D7\u2010\u2011\u2012\u2013\u2014\u2015\u2043\u2212\u2796\u2E3A\u2E3B\u30FC\uFE58\uFE63\uFF0D\uFF70]/g,
    '\u002D'
  )
}

参考