如何在JavaScript中连接字符串以创建动态正则表达式? 注释行工作正常。
var numericValidator = function (value, callback)
{
var decimalSymbol = ServerVar.NumberDecimalSeparator == "." ? "\." : ",";
console.log(decimalSymbol);
var regExNum = new RegExp("^-?(?:\d+|\d{1,3}(?:[\s\]\d{3})+)(?:[" + decimalSymbol + "]\d+)?");
if (regExNum.test(value)) {
//if (/^-?(?:\d+|\d{1,3}(?:[\s]\d{3})+)(?:[\.,]\d+)?$/.test(value)) {
if (callback) callback(true);
return true;
}
if (callback) callback(false);
return false;
};
答案 0 :(得分:2)
使用两个转义字符
var regExNum = new RegExp("^-?(?:\\d+|\\d{1,3}(?:[\\s\\]\\d{3})+)(?:[" + decimalSymbol + "]\\d+)?");
答案 1 :(得分:1)
我建议使用非常适合此类情况的ES6字符串。
var numericValidator = function (value, callback)
{
var decimalSymbol = ServerVar.NumberDecimalSeparator == "." ? "\." : ",";
console.log(decimalSymbol);
var regExNum = new RegExp(`^-?(?:\d+|\d{1,3}(?:[\s\]\d{3})+)(?:[${decimalSymbol}]\d+)?`);
if (regExNum.test(value)) {
//if (/^-?(?:\d+|\d{1,3}(?:[\s]\d{3})+)(?:[\.,]\d+)?$/.test(value)) {
if (callback) callback(true);
return true;
}
if (callback) callback(false);
return false;
};
此类字符串由反引号(`)分隔。
请注意,使用${<exp>}
将范围表达式嵌入到字符串中。