如何在javascript正则表达式中连接字符串文字?

如何在javascript正则表达式中连接字符串文字?,javascript,regex,Javascript,Regex,我有下面的表达 var exp = new RegExp('^[a-zA-Z0-9]' + getMinMax() + '$'); MygetMinMax()函数动态返回值ex{2,5},等等 但它返回一个异常,它表示正则表达式中的语法错误。 我怎样才能纠正它 function getMinMax() { var minLength = Rule.MinimumLength,maxLength = Rule.MaximumLengh; var limitExpression = (

我有下面的表达

var exp = new RegExp('^[a-zA-Z0-9]' + getMinMax() + '$');
My
getMinMax()
函数动态返回值ex{2,5},等等

但它返回一个异常,它表示正则表达式中的语法错误。 我怎样才能纠正它

function getMinMax() {
   var minLength = Rule.MinimumLength,maxLength = Rule.MaximumLengh;
   var limitExpression = (minLength != 'undefined' && minLength != null ) ? minLength.toString() : '';

   limitExpression = (maxLength != 'undefined' && maxLength != null ) ? (limitExpression != '' && limitExpression != null) ? ('{' + limitExpression + ',' + maxLength.toString() + '}') : ('{' + maxLength.toString() + '}') : '';

   return limitExpression;
}
你的代码很好

我敢打赌,您的
规则
对象中有一个小的输入错误,因此,您应该使用
规则.MaximumLengh
,而不是
规则.MaximumLength

另外,作为一项建议,不要使用这么多链式三元运算符,它们很难读懂。

你能试试吗

function getMinMax() {
   var minLength = Rule.MinimumLength,
       maxLength = Rule.MaximumLength,
       limitExpression = "";

       if (minLength != 'undefined' && minLength != null ) {
         limitExpression += minLength.toString();
       }
       if (maxLength != 'undefined' && maxLength != null ) {
         if (limitExpression.length>0) limitExpression+=",";
         limitExpression += maxLength.toString();
       }

   return limitExpression.length>0?"{"+limitExpression+"}":"";
}

它工作得很好,你确定
getMinMax()
返回字符串
“{2,5}”
?我从数据库中动态获取minlength和maxlength,并通过getMaxMin()分配它,但它引发了一个异常?显示你的getMinMax函数…你所说的“数据库”是什么意思?听起来像异步任务?设置一个断点。检查
getMinMax()
的返回值。我保证它不是
{x,y}
.function getMinMax(){var minLength=Rule.MinimumLength,maxLength=Rule.MaximumLengh;var limitExpression=(minLength!='undefined'&&minLength!=null)?minLength.toString():“”;limitExpression=(maxLength!='undefined'&&maxLength!=null)?(limitExpression!='&&limitExpression!=null)?('{'+limitExpression+','+maxLength.toString()++'}'):('{'+maxLength.toString()++'}'):'';返回limitExpression;}以获取“works”的某些定义我想,它只返回一个最小值而不是
{x,}
,它只返回一个最大值而不是
{0,x}
。我同意它不应该导致正则表达式解析错误。