You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript正则判断字符串结尾返回false及传参咨询

代码错误原因

你的逻辑返回false的核心问题是:正则字面量不会解析内部的变量标识符。

  • 代码中写的/target$/是写死的固定正则,作用是匹配以字面量字符串target结尾的内容,这里面的target就是普通的6个英文字符,完全不会引用函数传入的第二个参数target。
  • 执行confirmEnding("Bastian","n")时,正则实际校验的是字符串是否以target六个字符结尾,和你传入的目标值n毫无关联,自然返回错误结果。
修正写法

如果要基于传入的动态参数生成正则,不能使用/xxx/的正则字面量语法,需要通过RegExp构造函数创建正则实例:

function confirmEnding(str, target) {
  // 若target包含.、*、$等正则特殊元字符,需要提前做转义处理,避免匹配逻辑异常
  const endReg = new RegExp(`${target}$`)
  return endReg.test(str)
}

补充:判断字符串结尾不需要手写正则,直接调用字符串原生方法str.endsWith(target)即可实现完全相同的效果,代码更简洁也不需要处理正则转义问题。

正则能否作为函数参数传入

可以。JavaScript中的正则表达式是RegExp类型的对象,属于语言中的一等值,和字符串、数字、普通对象一样,支持作为参数传入函数、作为函数返回值、赋值给变量等操作。
传入正则作为参数的示例:

function checkStr(str, regRule) {
  return regRule.test(str)
}
// 直接传入正则字面量作为参数
checkStr("Bastian", /n$/) // 返回true

内容的提问来源于stack exchange,提问作者nadia12221

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:51:42