Javascript RegExp - 测试方法问题

时间:2015-06-18 13:01:28

标签: javascript regex

我在实现Javascript RegExp时遇到了问题 - 测试方法。

var array = ['facebook', 'twitter', 'linkedin', 'xing', 'weibo']

array .forEach(function(cns) {
    var connector_name = '/.*' + cns + '$/';
    console.log('conne name', connector_name);
    if (connector_name.test('facebook')) {
        con = {
            account_type: cns
        };
        console.log('cns', cns);
    }

});

它给了我uncaughtException *** [TypeError:Object /.*facebook$/没有方法' test']。 但是当我按照以下方式工作时

if (/.*facebook$/.test('facebook')) {
con = {
    account_type: 'facebook'
    };
}

请帮我解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:1)

你可以像这样创建一个正则表达式:

/regular expression/

......或者像这样:

new RegExp('regular expression')

你不能使用这样的字符串创建一个:

'/.*' + cns + '$/';

<强>段:

var array = ['facebook', 'twitter', 'linkedin', 'xing', 'weibo']

array .forEach(function(cns) {
  var connector_name = new RegExp('.*' + cns + '$');
  console.log('conne name', connector_name);
  if (connector_name.test('facebook')) {
    con = {
      account_type: cns
    };
    console.log('cns', cns);
  }
});

答案 1 :(得分:1)

在您的代码中:

  

var connector_name = '/.*' + cns + '$/';

connector_name是一个String,而不是一个RegExp对象。并且String没有test()方法。

但是在这里:

  

if (/.*facebook$/.test('facebook')) {

/.*facebook$/是一个RegExp对象,它具有test()方法。

您想要使用的是RegExp构造函数:

var array = ['facebook', 'twitter', 'linkedin', 'xing', 'weibo']

array .forEach(function(cns) {
    var connector_name = new RegExp('.*' + cns + '$');
    console.log('conne name', connector_name);
    if (connector_name.test(facebook)) {
        con = {
            account_type: cns
        };
        console.log('cns', cns);
    }

});