迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中 TypeError: regex match is not a function 错误

作者:迹忆客 最近更新:2023/01/20 浏览次数:

当对非字符串类型的值调用匹配方法时,会发生“TypeError: match is not a function”错误。

要解决该错误,需要确保仅对字符串调用 match 方法,例如 'ABC'.match(/[A-Z]/g)

下面是产生上述错误的一个示例

const str = {};

// ⛔️ TypeError: match is not a function
const result = str.match(/[A-Z]/g);

JavaScript 中 TypeError: regex match is not a function 错误

我们在对象上调用了 String.match 方法并返回了错误。

只对字符串调用 match() 方法

要解决该错误,请使用 console.log 打印调用 match 方法的值,并确保仅对字符串调用该方法。

const str = 'Fql Jiyik';

const result = str.match(/[A-Z]/g);

console.log(result); // 👉️ ['F', 'J']

如果该值不是字符串,我们可以使用 String() 构造函数对其进行转换。

const num = 1234;

// 👇️ use String() to convert to string first
const result = String(num).match(/[0-2]/g);

console.log(result); // 👉️ ['1', '2']

String() 构造函数将提供的值转换为字符串并返回结果。


在调用 match() 之前检查该值是否为字符串

或者,我们可以在调用 match() 方法之前检查该值是否为字符串。

const str = null;

const result = typeof str === 'string' ? str.match(/[0-2]/g) : null;

console.log(result); // 👉️ null

我们使用了一个三元运算符来检查 str 变量是否存储了一个字符串。

如果是,则返回逗号左边的值,否则返回右边的值。

我们也可以使用 if 语句来获得相同的结果。

const str = undefined;

let result = null;

if (typeof str === 'string') {
  result = str.match(/[0-2]/g);
}

console.log(result); // 👉️ null

如果该值是一个字符串,我们返回对其调用 match 方法的结果,否则,我们返回一个空值。

如果错误仍然存在,请使用 console.log 打印正在调用 match 方法的值并使用 typeof 运算符检查其类型。

console.log(typeof 'jiyik.com'); // 👉️ string
console.log(typeof 12345); // 👉️ number
console.log(typeof []); // 👉️ object

如果该值是一个对象,则很有可能我们忘记访问需要调用 match() 方法的特定属性。

// ✅ with objects
const obj = {
  example: '123456',
};

const result1 = obj.example.match(/[0-2]/g);
console.log(result1); // 👉️ [ '1', '2' ]

// --------------------------------------------
// ✅ with arrays

const arr = ['123456', '45', '74'];

const result2 = arr[0].match(/[0-2]/g);
console.log(result2); // 👉️ [ '1', '2' ]

在调用 String.match() 方法之前,我们访问了对象的属性和数组中的元素。

总结

当对非字符串类型的值调用 match 方法时,会发生“match is not a function”错误。

要解决该错误,请确保仅对字符串调用 match 方法,例如 'ABC'.match(/[A-Z]/g)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便