2015-06-18 62 views
1

我在实现Javascript RegExp - 测试方法中遇到问题。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$/ has no method'test']。 但是当我给下面的方式,它的工作原理

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

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

回答

1

在您的代码:

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

connector_name是一个字符串,而不是RegExp对象。而String没有test()方法。

但在这里:

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

/.*facebook$/是RegExp对象,其具有方法test()

要使用什么是正则表达式的构造函数:

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

}); 
+0

非常感谢你为你的快速回复。它真的帮助了我。 – Dibish

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

+0

太感谢你了,它真的帮了我.. :) – Dibish