符号あり整数,符号なし整数の正規表現と,入力制限の方法

JavaScript

cover image from Unsplash

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 関数のテスト結果を示している。

https://regex101.com/

入力可能文字を制限するには?

基本方針は,2つある。

  1. str.match(regexp) : 正規表現と一致する文字を検索し,抽出する
  2. 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, ""); // 、先頭の"-"を残し、文字列の途中の"-"を取り除く
}