JavaScriptで文字列が半角数字であるかを正規表現でチェックする
JavaScriptで文字列が半角数字であるかを正規表現でチェックするには「^[0-9]+$」のパターンを使います。この正規表現は「1文字以上の0~9の組み合わせで構成される文字列」という意味になり「001」や「9」、「12345」などにマッチします。「A1234」などは文字列に半角数字以外が含まれるためマッチしません。
また「^[0-9]{7}$」のパターンは7桁の半角数字にマッチするので郵便番号の入力チェックなどに利用できます。5桁以上8桁以下の半角数字にマッチさせたい場合は「^[0-9]{5,8}$」とパターンを記述することができます。
基本的な半角数字チェックで利用できる正規表現のパターンは以下になります。
# | マッチさせたい条件 | 正規表現パターン |
---|---|---|
1 | すべて半角数字である | ^[0-9]+$ |
2 | n桁の半角数字である | ^[0-9]{n}$ |
3 | n桁以上の半角数字である | ^[0-9]{n,}$ |
4 | m桁以下の半角数字である | ^[0-9]{1,m}$ |
5 | n桁以上m桁以下の半角数字である | ^[0-9]{n,m}$ |
ソースコード
n桁の半角数字であるかをチェックする
/**
* 文字列が指定した桁数の半角数字かチェックします
*
* @param {string} str チェック対象の文字列
* @param {number} len 桁数
* @returns {boolean} 文字列が指定した桁数の半角数字の場合はtrue、それ以外はfalse
*/
const isHalfWidthNumbersFixedLength = (str, len) => {
if (len < 0) {
throw new Error("桁数は0以上の整数である必要があります。");
}
const regex = new RegExp(`^[0-9]{${len}}$`, "u");
return regex.test(str);
};
検証
検証結果
n桁以上の半角数字であるかをチェックする
/**
* 文字列が最小桁数以上の半角数字かチェックします
*
* @param {string} str チェック対象の文字列
* @param {number} minLength 最小桁数
* @returns {boolean} 文字列が最小桁数以上の半角数字の場合はtrue、それ以外はfalse
*/
const isHalfWidthNumbersAtLeastMinLength = (str, minLength) => {
if (minLength < 0) {
throw new Error("最小桁数は0以上の整数である必要があります。");
}
const regex = new RegExp(`^[0-9]{${minLength},}$`, "u");
return regex.test(str);
};
検証
検証結果
m桁以下の半角数字であるかをチェックする
/**
* 文字列が最大桁数以下の半角数字かチェックします
*
* @param {string} str チェック対象の文字列
* @param {number} maxLength 最大桁数
* @returns {boolean} 文字列が最大桁数以下の半角数字の場合はtrue、それ以外はfalse
*/
const isHalfWidthNumbersAtMostMaxLength = (str, maxLength) => {
if (maxLength < 1) {
throw new Error("最大桁数は1以上の整数である必要があります。");
}
const regex = new RegExp(`^[0-9]{1,${maxLength}}$`, "u");
return regex.test(str);
};
検証
検証結果
n桁以上m桁以下の半角数字であるかをチェックする
/**
* 文字列が指定した桁数範囲の半角数字かチェックします
*
* @param {string} str チェック対象の文字列
* @param {number} minLength 最小桁数
* @param {number} maxLength 最大桁数
* @returns {boolean} 文字列が最小桁数以上の半角数字の場合はtrue、それ以外はfalse
*/
const isHalfWidthNumbersInRange = (str, minLength, maxLength) => {
if (minLength < 0) {
throw new Error("最小桁数は0以上の整数である必要があります。");
}
if (maxLength < 1) {
throw new Error("最大桁数は1以上の整数である必要があります。");
}
if (maxLength < minLength) {
throw new Error("最小桁数と最大桁数が逆転しています。");
}
const regex = new RegExp(`^[0-9]{${minLength},${maxLength}}$`, "u");
return regex.test(str);
};