あなたの質問からは明確ではありませんが、変数を使用して正規表現で許容される値の範囲を決定したいと考えています。そうであれば、パターン文字列を次のように作成できます。
pattern = '/[\d]{0,' + integer_part + '}(' + decimal_separator + '[\d]{1,' + decimal_part + '})?/';
これは基本的な実装です。この場合、.
セパレーターとして使用するには、実際に設定する必要がありますdecimal_separator = '\.';
。これは、正規表現でワイルドカードに一致する小数点をエスケープすることです。
より多くのエッジ ケースを本当に探したい場合は、次のように条件付きでパターンを構築することをお勧めします。
pattern = '/[\d]{0,' + integer_part + '}';
if (decimal_part > 0) {
if (decimal_separator == '.') {
pattern += '(\.';
} else {
pattern += '(' + decimal_separator;
}
pattern += '[\d]';
if (decimal_part == 1) {
pattern += '{1}';
} else {
pattern += '{1,' + decimal_part + '}';
}
pattern += ')?';
}
pattern += '/';