尽管您的问题尚不清楚,但我假设您想使用变量来确定正则表达式中允许值的范围如果是这样,您可以使您的模式字符串如下所示:
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 += '/';