<メールアドレス>
const reEmail = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
function isValidEmail(email) {
return reEmail.test(String(email).trim());
}
<電話番号>
・人間向けのゆるいパターン
const rePhoneLoose = /^[+\d]?(?:[\d().\s-]{6,30})$/;
function isValidPhoneLoose(raw) {
if (!rePhoneLoose.test(raw)) return false;
// 実際は数字のみカウントして長さチェック(例:7〜15桁)
const digits = raw.replace(/\D/g, '');
return digits.length >= 7 && digits.length <= 15;
}
・グローバル推奨形式(E.164:厳格)
const reE164 = /^\+?[1-9]\d{1,14}$/;
function isValidE164(raw) {
const s = raw.trim();
return reE164.test(s);
}
・国別に厳密にチェックしたいなら(推奨ライブラリ)
Googleの libphonenumber ベースのライブラリを使うのが最も堅牢
import { parsePhoneNumberFromString } from 'libphonenumber-js';
function isValidPhoneWithLib(number, country = 'JP') {
const phoneNumber = parsePhoneNumberFromString(number, country);
return phoneNumber ? phoneNumber.isValid() : false;
}