Skip to content

判定是否是函数字符串

更新于: at 19:40
  1. 方法一:正则
/**
 * 判定是否是函数字符串
 * @param str 字符串
 */
const isFunctionString = (str: string): boolean => {
  const functionPattern = /^\s*function\s+\w+\s*\([^)]*\)\s*\{/;
  const arrowFunctionPattern = /^\s*\(?[\s\S]*\)?\s*=>/;
  return functionPattern.test(str) || arrowFunctionPattern.test(str);
};
  1. 方法二:创建一个函数,判定是否抛出异常
/**
 * 判定是否是函数字符串
 * @param str 字符串
 */
const isFunctionString = (str: string): boolean => {
  try {
    const fn = new Function(`return ${str}`)();
    return isFunction(fn);
  } catch (e) {
    return false;
  }
};