☎️
電話番号の正規表現(TypeScript)
ハイフンを必須入力にしたいという要望から、かるい気持ちでネットを検索すると以下のようなものができてきました。
function isValidJapanesePhoneNumber(phoneNumber: string): boolean {
const regex = /^0\d{1,4}-\d{1,4}-\d{3,4}$/;
return regex.test(phoneNumber);
}
// 使用例
const phoneNumber1 = "03-1234-5678";
const phoneNumber2 = "090-1234-5678";
const phoneNumber3 = "0120-123-456";
console.log(isValidJapanesePhoneNumber(phoneNumber1)); // true
console.log(isValidJapanesePhoneNumber(phoneNumber2)); // true
console.log(isValidJapanesePhoneNumber(phoneNumber3)); // true
ただこれだけだと03-1-222みたいなへんてこりんがOKになってしまうのでChatGPTに聞いてみたら以下のようになった
function isValidJapanesePhoneNumber(phoneNumber: string): boolean {
const regex = /^0(?:\d{1}-\d{4}-\d{4}|\d{2}-\d{3}-\d{4}|\d{2}-\d{4}-\d{3}|\d{3}-\d{2}-\d{4}|\d{3}-\d{3}-\d{3}|\d{4}-\d{1}-\d{4})$/;
return regex.test(phoneNumber);
}
// 使用例
const phoneNumber1 = "03-1234-5678";
const phoneNumber2 = "090-1234-5678";
const phoneNumber3 = "0120-123-456";
const phoneNumber4 = "05-3-244";
console.log(isValidJapanesePhoneNumber(phoneNumber1)); // true
console.log(isValidJapanesePhoneNumber(phoneNumber2)); // true
console.log(isValidJapanesePhoneNumber(phoneNumber3)); // true
console.log(isValidJapanesePhoneNumber(phoneNumber4)); // false
Discussion