我在实现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'
};
}
请帮我解决这个问题。谢谢。
答案 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);
}
});