类型错误:正则表达式测试不是 JavaScript 中的函数

类型错误:正则表达式测试不是 JavaScript 中的函数

TypeError: regex test is not a function in JavaScript

test()当在不是正则表达式(例如字符串)的值上调用该方法时,会发生“TypeError: test is not a function”错误。

要解决该错误,请确保仅test在正则表达式上调用该方法,例如/[a-b]/.test('abc').

typeerror 正则表达式测试不是一个函数

下面是错误如何发生的示例。

索引.js
const regex = '[a-z]'; // ⛔️ TypeError test is not a function const result = regex.test('example');

我们在字符串上调用了
RegExp.test()
方法并返回了错误。

test()只在正则表达式上调用方法

要解决该错误,请确保仅对test()正则表达式调用该方法。

索引.js
const result = /[a-z]/.test('example'); console.log(result); // 👉️ true

RegExp.test()方法只能在有效的正则表达式上调用。该方法检查正则表达式和字符串之间是否匹配并返回结果。

请注意,正则表达式没有包含在字符串中。

正斜杠/ /标记正则表达式的开始和结束。

将正则表达式存储在变量中时,请确保不要将其括在引号中。

索引.js
const regex = /[a-z]/; const result = regex.test('example'); console.log(result); // 👉️ true

如果正则表达式用引号括起来,它就会变成一个字符串,并且字符串不会实现任何test()方法。

这是使用该RegExp.test()方法的另一个示例。

以下函数使用该方法检查字符是否为字母。

索引.js
function charIsLetter(char) { if (typeof char !== 'string') { return false; } return /^[a-zA-Z]+$/.test(char); } console.log(charIsLetter('b')); // 👉️ true console.log(charIsLetter('!')); // 👉️ false console.log(charIsLetter(' ')); // 👉️ false console.log(charIsLetter(undefined)); // 👉️ false

我们使用了
RegExp.test
方法来检查一个字符是否是一个字母。

如果正则表达式在字符串中匹配,则test方法返回,否则返回。truefalse

正斜杠/ /标记正则表达式的开始和结束。

插入符^匹配输入的开头,美元符号$匹配输入的结尾。

方括号之间的部分[]称为字符类,匹配一定范围的大小写a-z字母 A-Z

加号+与前面的项目(字母范围)匹配 1 次或多次。

这是一个使用该RegExp.test()方法检查字符串是否仅包含数字的示例。

索引.js
function onlyNumbers(str) { return /^[0-9]+$/.test(str); } console.log(onlyNumbers('246')); // 👉️ true console.log(onlyNumbers('246asd246')); // 👉️ false console.log(onlyNumbers('123.4')); // 👉️ false

正斜杠/ /标记正则表达式的开始和结束。

The caret ^ matches the beginning of the input, and the dollar sign $
matches the end of the input.

The part between the square brackets [] is called a character class and matches a range of digits from 0 to 9.

The plus + matches the preceding item (the 0-9 range) 1 or more times.

If you ever need help reading a regular expression, check out this
regular expression cheatsheet
by MDN.

It contains a table with the name and the meaning of each special character with
examples.

Conclusion #

The “TypeError: test is not a function” error occurs when the test() method
is called on a value that is not a regular expression, e.g. a string.

要解决该错误,请确保仅test在正则表达式上调用该方法,例如/[a-b]/.test('abc').