TypeError:undefined不是调用replace方法时的函数

时间:2014-08-16 17:48:51

标签: javascript

我知道代码很少,我错过了一些小东西。

小提琴:http://jsfiddle.net/0oa9006e/1/

代码:

var veri = "+???+Girdiğiniz eposta adresi 'adfadf' geçersiz.-???-";

var a = veri.match(/\+[\?]*\+(.*)*\-[\?]*\-/g);
 a = a.replace(/[\+\-\?]*/g , "");
alert(a);

4 个答案:

答案 0 :(得分:2)

String.match(param)方法返回包含所有匹配项的数组。和javascript中的数组没有.replace method。因此错误。你可以尝试类似的东西:

 a = a.toString().replace(/[\+\-\?]*/g,""); // Array to string converstion

答案 1 :(得分:1)

您的匹配正在返回一个没有replace的数组。尝试:

a = a[0].replace(/[\+\-\?]*/g , "");

答案 2 :(得分:1)

var veri = "+???+Girdiğiniz eposta adresi 'adfadf' geçersiz.-???-";


var a = veri.match(/\+[\?]*\+(.*)*\-[\?]*\-/g);
// The variable 'a' is now an array.
// The first step in debugging is to always make sure you have the values
// you think you have.
console.log(a);

// Arrays have no replace method.
// Perhaps you are trying to access a[0]?
// or did you mean to modify `veri`?
 a = a.replace(/[\+\-\?]*/g , "");
alert(a);

答案 3 :(得分:1)

执行veri.match(/\+[\?]*\+(.*)*\-[\?]*\-/g)后,您的变量a将初始化为JavaScript数组,该数组没有replace方法。

使用Regex101等RegEx工具查看正则表达式在字符串veri上的匹配情况,然后对该数组的相应元素执行replace操作。

以下是您正在使用的正则表达式的示例:http://regex101.com/r/hG3uI1/1

如您所见,您的正则表达式与veri所拥有的整个字符串匹配,因此您希望对replace返回的第一个(也是唯一的)元素执行match操作:

a = a[0].replace(/[\+\-\?]*/g , "");