符号あり整数,符号なし整数の正規表現と,入力制限の方法
Photo by Robin Canfield on Unsplash
本記事の内容
正規表現を用いて,符号あり・符号なし整数を表現する方法を紹介する。 また,JavaScript において,正規表現と replace()メソッドを用いて,入力値を符号あり・符号なし整数に制限する方法を紹介する。
参考サイトはこちら
https://ja.javascript.info/regular-expressions
符号あり整数,符号なし整数の正規表現
// 符号なし整数
regexp = /[1-9]+[0-9]*/;
// 符号あり整数
regexp = /\-?[1-9]+[0-9]*/;
出力結果
![Image from Gyazo](https://i.gyazo.com/7268014e6a21abeec58ef892cb039ad1.jpg =500x) (出典:https://regex101.com/ )フラグは g を使用。Match 関数のテスト結果を示している。
入力可能文字を制限するには?
基本方針は,2つある。
- str.match(regexp) : 正規表現と一致する文字を検索し,抽出する
- str.replace(regexp, replacement) : 正規表現と一致する文字を""に置換,すなわち取り除く
本記事では,2 の replace() メソッドを用いる方法を紹介する。 なお,読みやすさのため,以下では,正規表現内のすべての文字を[ ]で囲んでいる。 このままでもうまく動作するし,不必要な[ ]は,各自取り除いても問題ない。
// 符号なし整数
let input = “012345”;
let output;
output = input.replace(/[^0-9]/g, ""); // 0から9以外の文字を取り除く
output = outout.replace(/^[0]+/g, ""); // 文字列の先頭の0を取り除く
// 符号あり整数
let input = “012345”;
let output;
output = input.replace(/[^-0-9]/g, ""); // -と0~9以外の文字を取り除く
output = outout.replace(/^[0]+/g, ""); // 文字列の先頭部の"0..."から0を取り除く
output = outout.replace(/^[-][0]+/g, "-"); // 文字列の先頭部の"-0..."から0を取り除く
if (/^[^-][0-9]*[-]/.test(val) == true) {
output = output.replace(/[-]/g, ""); // 文字列の途中の"-"を取り除く
} else if (/^[-]+[0-9]*[-]/.test(val) == true) {
output = "-" + output.replace(/[-]/g, ""); // 、先頭の"-"を残し、文字列の途中の"-"を取り除く
}