実現したいこと
Nodeで都道府県名を扱うプログラムを作成しています。
配列に保存されている都道府県名の末尾に「都道府県」が設定されていることを正規表現で確認したいと考えていますが、正常に動作しません。
発生している問題
大阪府を除いたデータは正常に判断されますが、「大阪府」がfalseと判定されます。
東京都 is true 東京 is false 神奈川県 is true 神奈川 is false 北海道 is true 大阪府 is false 大阪 is false
該当のソースコード
javascript
1const prefs = ['東京都', '東京', '神奈川県', '神奈川', '北海道', '大阪府', '大阪']; 2const reg = /[都道府県]$/g; 3 4prefs.forEach(pref => { 5 if (reg.test(pref)) { 6 console.log(pref + ' is true'); 7 } else { 8 console.log(pref + ' is false'); 9 } 10});
試したこと
gオプションを外すと正常に動作します。
gオプションをつけたままで、配列prefsの大阪府の前の北海道を削除すると正常に動作します。
ちなみに、regex101.comで正規表現を/[都道府県]$/mg
とし、以下のテストデータを入力すると、大阪府も正常に(具体的には大阪府の「府」が)マッチしました。
TEST EXPRESSION
東京都
東京
神奈川県
神奈川
北海道
大阪府
大阪
補足情報(FW/ツールのバージョンなど)
Nodeのバージョンはv14.16.1です。
正規表現の考え方が間違っている、または、日本語の問題なのか、ご存じの方、アドバイス&ヒントをお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/04 02:49
2021/05/04 03:55