0

我有以下表达,

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;
}
4

2 回答 2

2

你的代码工作得很好。

我敢打赌,你的对象中有一个小错字Rule所以Rule.MaximumLengh你可能应该有Rule.MaximumLength.

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

于 2012-09-13T14:06:04.567 回答
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+"}":"";
}
于 2012-09-13T14:29:46.173 回答