Skip to content

normalizeLawNum の仕様 ​

INFO

houki-abbreviations v0.7.1 の specs/current/normalize_law_num/spec.md から自動生成しました(仕様 ID 16 件・2026-10-11)。手で編集しないでください。再生成は node scripts/generate-reference.mjs specs です。

法令番号の数字の書き方を算用数字に揃える

使いどころ・引数・実測の呼び出し例は、関数のページにあります。

最後に仕様が変わったのは v0.7.0 の「関数ごとの全角・ダッシュ類・大文字の扱いを揃える(T3 正規化)」(2026-09-30 承認)です。それまでの経緯は承認の履歴にあります。

利用者と得られる結果 ​

この機能の利用者と、利用者が渡すもの・得られる結果を示します。

  • このパッケージを import するコード(houki-hub family の MCP サーバーなど)。漢数字・算用数字・全角数字のどれで書かれた法令番号でも、照合に使う 1 つの文字列を受け取る。比べる 2 つの法令番号の両方にこの関数を通してから比べる
  • このパッケージの中では lookupByLawNum が、入力と辞書の law_num の両方にこの関数を通してから比べる

入力 ​

呼び出すときに渡す値です。

引数必須内容
input必須法令番号。例: 昭和二十五年法律第百三十七号 / 昭和25年法律第137号 / 昭和25年法律第137号

戻り値 ​

呼び出しが返す値です。

string。次の順に変換した文字列。

順変換変換前変換後
1normalizeJpText と同じ変換全角数字・全角英字・ダッシュ類(- ‐ ‑ – — ― −)・~(U+FF5E)・〜(U+301C)・全角スペースnormalizeJpText の表のとおり。ダッシュ類は -(U+002D)
2空白を取り除くすべての空白(半角スペース・タブ・改行など。前後も途中も)なし
3元年を 1 年にする元年1年
4年・番号の位置にある漢数字を算用数字にする〇一二三四五六七八九十百千 が続いた並びのうち、直後が 年 か 号、直前が 第、直前か直後が -(順 1 で揃えたダッシュ)のどれかに当たるもの。kanjiToNumber で読める並びだけその値の算用数字。読めない並びと、どの位置にも当たらない並びはそのまま
5算用数字の先頭の 0 を取る算用数字の並び(0137)先頭の 0 を除いた並び(137)。0 だけのときは 0。桁数の上限は無い

表に無い文字(元号、年 法律 第 号、省名、中黒 ・ など)は変えない。v0.6.1 まで順 6 にあった「ダッシュ類を半角ハイフンにする」は順 1 に含める。

扱わないこと ​

この機能が意図して扱わないことです。

  • 元号の別表記(S25 / 昭25)を元号名にすること、第 や 号 を補うこと、法令の種別名(法律 / 政令)を補うこと(呼び出し側で揃える)
  • 万以上の単位を読むこと。normalizeLawNum('第二万三千号') は '第二万3000号' になり、第23000号 とは一致しない(kanjiToNumber が万を読まないため。二 は 万 に隣り合うので変えない)
  • 元号を西暦にすること
  • 法令番号として正しい形かを確かめること(どんな文字列でも変換して返す)
  • 辞書から法令を引くこと(lookupByLawNum)

処理の流れ ​

図の中の番号は「できること」の仕様 ID の末尾 3 桁です。

仕様項目 ​

この機能の仕様項目を、仕様 ID ごとに並べています。見出しは仕様項目を 1 文で表したもので、条件・応答の細部・例は「詳細」を開くと読めます。仕様 ID はそれぞれ受入テストと対応していて、テストの無い ID があると各リポジトリの CI が止まります。

SPEC-ABBR-NORMALIZE-LAW-NUM-001 漢数字・算用数字・全角数字の法令番号を同じ文字列にする ​

詳細

年と番号の数字を算用数字にそろえる。漢数字は位取り(百三十七)でも位ごと(一三七)でもよい。全角数字は半角にする。

例: 次の 4 つはどれも '昭和25年法律第137号' を返す。

  • normalizeLawNum('昭和二十五年法律第百三十七号')
  • normalizeLawNum('昭和25年法律第137号')
  • normalizeLawNum('昭和25年法律第137号')
  • normalizeLawNum('昭和二五年法律第一三七号')

SPEC-ABBR-NORMALIZE-LAW-NUM-002 空白をすべて取り除く ​

詳細

前後だけでなく途中の空白も取り除く。

例: normalizeLawNum(' 昭和25年 法律 第137号 ') は '昭和25年法律第137号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-003 算用数字の先頭の 0 を取る ​

詳細

例: normalizeLawNum('昭和25年法律第0137号') は '昭和25年法律第137号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-004 元年を 1 年にする ​

詳細

元年 を 1年 にする。

例: normalizeLawNum('令和元年法律第一号') は '令和1年法律第1号'、normalizeLawNum('平成元年法律第四十二号') は '平成1年法律第42号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-005 人事院規則の番号のダッシュを半角ハイフンにする ​

詳細

戻り値の表の順 1 でダッシュ類を - にする。人事院規則の番号(一―一)はこれで 1-1 になる。ダッシュの直前・直後の漢数字も算用数字にする。

例: normalizeLawNum('昭和二十四年人事院規則一―一') は '昭和24年人事院規則1-1'、normalizeLawNum('昭和三十五年人事院規則九―三〇') は '昭和35年人事院規則9-30'、normalizeLawNum('昭和二十四年人事院規則二―〇') は '昭和24年人事院規則2-0'。

SPEC-ABBR-NORMALIZE-LAW-NUM-006 番号の無い法令番号も年の数字を揃える ​

詳細

第…号 の無い法令番号(憲法・勅令など)も、年の数字を算用数字にする。

例: normalizeLawNum('昭和二十一年憲法') は '昭和21年憲法'、normalizeLawNum('明治十九年勅令') は '明治19年勅令'。

SPEC-ABBR-NORMALIZE-LAW-NUM-007 数字以外の語は変えない ​

詳細

元号・法令の種別名・省名・中黒 ・ は変えない。共同省令の長い種別名もそのまま残る。

例: normalizeLawNum('平成十五年内閣府・総務省・財務省・厚生労働省・農林水産省・経済産業省・国土交通省令第三号') は '平成15年内閣府・総務省・財務省・厚生労働省・農林水産省・経済産業省・国土交通省令第3号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-008 元号の別表記と「第」「号」の省略は揃えない ​

詳細

元号の別表記(S25 / 昭25)を元号名にすることと、第 や 号 の有無をそろえることはしない。書き方が違えば、戻り値も違う文字列のまま。

例: normalizeLawNum('S25年法律第137号') は 'S25年法律第137号'。normalizeLawNum('昭和25年法律137号') は '昭和25年法律137号' で、normalizeLawNum('昭和25年法律第137号') と一致しない。

SPEC-ABBR-NORMALIZE-LAW-NUM-009 空文字には空文字を返す ​

詳細

input が空文字のときは '' を返す。

SPEC-ABBR-NORMALIZE-LAW-NUM-010 読めない漢数字の並びはそのまま残す ​

詳細

kanjiToNumber が null を返す漢数字の並びは、算用数字にせず元の文字のまま残す。同じ入力の中の読める並びは算用数字にする。

例: normalizeLawNum('昭和十十年法律第一号') は '昭和十十年法律第1号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-011 空白で分かれた元年も 1 年にする ​

詳細

空白を取り除いてから 元年 を 1年 にするので、元 と 年 のあいだや前後に空白があっても 1年 になる。

例: normalizeLawNum('令和 元 年法律第一号') は '令和1年法律第1号'。

SPEC-ABBR-NORMALIZE-LAW-NUM-012 U+2015 以外のダッシュ類も半角ハイフンにする ​

詳細

‐(U+2010)、‑(U+2011)、–(U+2013)、—(U+2014)、−(U+2212)も、―(U+2015)と同じく - にする。

例: normalizeLawNum('昭和二十四年人事院規則一‐一')、normalizeLawNum('昭和二十四年人事院規則一‑一')、normalizeLawNum('昭和二十四年人事院規則一–一')、normalizeLawNum('昭和二十四年人事院規則一—一')、normalizeLawNum('昭和二十四年人事院規則一−一') はどれも '昭和24年人事院規則1-1'。

SPEC-ABBR-NORMALIZE-LAW-NUM-013 罫線と長音は半角ハイフンにしない ​

詳細

罫線 ─(U+2500)と長音 ー(U+30FC)はダッシュ類として扱わず、変えない。

例: normalizeLawNum('昭和二十四年人事院規則一─一') は '昭和24年人事院規則一─一'(漢数字は罫線の隣なので変えない。SPEC-ABBR-NORMALIZE-LAW-NUM-015)、normalizeLawNum('昭和二十四年人事院規則一ー一') は '昭和24年人事院規則一ー一'。

SPEC-ABBR-NORMALIZE-LAW-NUM-014 null と undefined には空文字を返す ​

詳細

input が null または undefined のときは '' を返す。

例: normalizeLawNum(null) も normalizeLawNum(undefined) も ''。

SPEC-ABBR-NORMALIZE-LAW-NUM-015 年・番号の位置に無い漢数字は変えない ​

詳細

漢数字の並びを算用数字にするのは、直後が 年 か 号、直前が 第、直前か直後がダッシュ(- に揃えた後)のどれかのときだけ。地名や語の一部にある漢数字は変えない。

例: normalizeLawNum('千葉県条例第一号') は '千葉県条例第1号'(v0.6.1 では '1000葉県条例第1号')。normalizeLawNum('三重県') は '三重県'。normalizeLawNum('平成十五年一般法律第三号') は '平成15年一般法律第3号'(一般 の 一 は変えない)。normalizeLawNum('昭二五・一〇・二五') は '昭二五・一〇・二五'(年 第 号 ダッシュのどれにも隣り合わない)。

SPEC-ABBR-NORMALIZE-LAW-NUM-016 桁数の大きい算用数字も丸めない ​

詳細

算用数字の先頭の 0 を取るときに、桁数によらず並びをそのまま残す。数値に変換して丸めることはしない。

例: normalizeLawNum('昭和25年法律第12345678901234567890号') は '昭和25年法律第12345678901234567890号'(v0.6.1 では '昭和25年法律第12345678901234567000号')。normalizeLawNum('昭和25年法律第00012345678901234567890号') も同じ文字列。

実装する人に向けた情報 ​

ここから下は、この機能を実装する人と、仕様の変更を追う人に向けた節です。使い方を知りたいだけなら、読まなくて構いません。

検討中のこと ​

仕様を書き起こしたときに見つかった項目のうち、扱いを Issue で検討しているものです。ここに挙げたことは、今後の版で変わることがあります。開くと、元の仕様書の記述をそのまま読めます。

仕様書の「未決」の節

初版起こしで見つけた、意図か不具合かを人が決める項目です。決まったら「できること」に ID を振るか、specs/changes/ の差分にします。

意図か不具合かの判断が要る項目は houki-abbreviations の Issue に移し、ここには題と Issue の番号だけを残します。今の振る舞いのままでよくテストが無いだけの項目は、受入テストを書いてから「できること」に ID を振ります。

  1. 数字でない語の中の漢数字も算用数字になる。 → SPEC-ABBR-NORMALIZE-LAW-NUM-015
  2. 読めない漢数字の並びはそのまま残す。 → SPEC-ABBR-NORMALIZE-LAW-NUM-010
  3. 元年 は場所を問わず 1年 になる。 → SPEC-ABBR-NORMALIZE-LAW-NUM-011
  4. ダッシュ類のうちテストがあるのは ―(U+2015)だけ。 → SPEC-ABBR-NORMALIZE-LAW-NUM-012、SPEC-ABBR-NORMALIZE-LAW-NUM-013
  5. 桁数の大きい算用数字で値が変わる。 → SPEC-ABBR-NORMALIZE-LAW-NUM-016
  6. null / undefined を渡したとき。 → SPEC-ABBR-NORMALIZE-LAW-NUM-014

承認の履歴 ​

この機能の仕様が、いつ、どの変更で承認されたかを新しい順に並べています。各リポジトリの npx spec-ids history normalize_law_num と同じ内容です。変更の名前から、変更の理由と前後の振る舞いを書いた文書(GitHub)を開けます。

承認の履歴(4 件)
承認日版変更仕様 PR
2026-09-30v0.7.0関数ごとの全角・ダッシュ類・大文字の扱いを揃える(T3 正規化)#30
2026-09-27v0.6.1テストが無いだけの振る舞いに仕様 ID を振る#27
2026-09-27v0.6.1「未決」のうち判断が要る 52 件を Issue に移す#26
2026-09-27—初版#10

関連ページ ​

このページの元になった文書と、あわせて読むページです。

本サイトの内容は調査の出発点であり、法的助言ではありません。個別の事案は資格を持つ専門家に相談してください。免責事項と利用範囲