带有regEx的动态变量

时间:2018-04-04 10:35:39

标签: javascript jquery regex

我正在构建一个脚本,用于测试对象中是否存在变量。为此,我使用regEx来测试对象中是否存在该特定名称。

我面临的问题是JSON响应有时会翻译成德语或西班牙语。 因此,在下面的情况下,我想测试spec.title名称Length (mm)。此标题也可以是Länge (mm)Longitud (mm)

在我的项目中,已经建立了一个名为getAjaxTranslation('string')的翻译功能 因此,getAjaxTranslation('length')将返回已翻译的字符串以获取长度。

所以我的问题是如何在下面的代码中使用getAjaxTranslation('length')进行测试?

所以我尝试的是:

reLength = '/'+ getAjaxTranslation('length') + '/i' //just to try
reLength = "'+ getAjaxTranslation('length') + '";
reLength = getAjaxTranslation('length')

以上尝试会出现reLength.test is not a function等错误。所以我可能会使用错误的字符串/变量或做错事。我仍然遇到那些regExs的问题...

任何帮助都非常感谢!

完整代码:

var data = {
  "product": {
    "specs": {
      "231638": {
        "id": 231638,
        "title": "Length (mm)",
        "value": "1200"
      },
      "231641": {
        "id": 231641,
        "title": "Width (mm)",
        "value": "800"
      },
      "231644": {
        "id": 231644,
        "title": "Height (mm)",
        "value": "144"
      } //etc etc
    }
  }
};

var length = 0, width = 0, height = 0,
  reLength = /length/i,
  reWidth = /width/i,
  reHeight = /height/i;
$.each(data.product.specs, function (specId, spec) {
  if (reLength.test(spec.title))
    length = spec.value;
  else if (reWidth.test(spec.title))
    width = spec.value;
  else if (reHeight.test(spec.title))
    height = spec.value;
});

1 个答案:

答案 0 :(得分:3)

  

以上尝试给出了像reLength.test不是函数等错误。

testRegExp对象的一种方法,将其设为

reLength =  new RegExp( getAjaxTranslation('length') , "i" )

或使用match代替test,例如

reLength =  getAjaxTranslation('length'); //no need to make a regexp object
!!spec.title.match(reLength)

reLength =  getAjaxTranslation('length'); 
spec.title.includes(reLength) //use includes