类型错误:正则表达式测试不是 JavaScript 中的函数
TypeError: regex test is not a function in JavaScript
test()
当在不是正则表达式(例如字符串)的值上调用该方法时,会发生“TypeError: test is not a function”错误。
要解决该错误,请确保仅test
在正则表达式上调用该方法,例如/[a-b]/.test('abc')
.
下面是错误如何发生的示例。
const regex = '[a-z]'; // ⛔️ TypeError test is not a function const result = regex.test('example');
我们在字符串上调用了
RegExp.test()
方法并返回了错误。
test()
只在正则表达式上调用方法
要解决该错误,请确保仅对test()
正则表达式调用该方法。
const result = /[a-z]/.test('example'); console.log(result); // 👉️ true
该RegExp.test()
方法只能在有效的正则表达式上调用。该方法检查正则表达式和字符串之间是否匹配并返回结果。
请注意,正则表达式没有包含在字符串中。
/ /
标记正则表达式的开始和结束。将正则表达式存储在变量中时,请确保不要将其括在引号中。
const regex = /[a-z]/; const result = regex.test('example'); console.log(result); // 👉️ true
如果正则表达式用引号括起来,它就会变成一个字符串,并且字符串不会实现任何test()
方法。
这是使用该RegExp.test()
方法的另一个示例。
以下函数使用该方法检查字符是否为字母。
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
方法返回,否则返回。true
false
正斜杠/ /
标记正则表达式的开始和结束。
插入符^
匹配输入的开头,美元符号$
匹配输入的结尾。
[]
称为字符类,匹配一定范围的大小写a-z
字母。 A-Z
加号+
与前面的项目(字母范围)匹配 1 次或多次。
这是一个使用该RegExp.test()
方法检查字符串是否仅包含数字的示例。
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.
[]
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')
.