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

时间:2012-09-13 13:58:43

标签: javascript regex

我有以下表达式,

var exp = new RegExp('^[a-zA-Z0-9]' + getMinMax() + '$');

我的getMinMax()函数动态返回值{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;
}

2 个答案:

答案 0 :(得分:2)

您的代码works就好了。

我敢打赌你的Rule对象中有一个小的拼写错误,所以你应该Rule.MaximumLengh而不是Rule.MaximumLength

另外,作为一个建议,不要使用这么多链接的三元运算符,要读它们真的很难。

答案 1 :(得分:0)

你可以尝试

吗?
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+"}":"";
}