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

使用正则表达式校验用户输入是否包含管理员输入内容的问题咨询

问题根因
  • 你当前定义的读取DOM元素、生成正则、计算匹配结果的代码都在全局作用域下,只会在页面首次加载时执行一次。此时两个输入框都为空值,生成的正则为空白正则,空白正则匹配任意字符串都会返回真,所以永远判断为correct
  • 点击按钮触发校验函数时,读取的是页面加载时计算好的旧匹配结果,不会读取用户最新输入的内容,自然无法正确判断
修复代码

将变量读取、正则生成、匹配计算的逻辑都移入校验函数内部,每次点击都会重新获取最新输入值计算:

function sample() {
  // 每次点击都读取最新的输入值
  const userInput = document.getElementById('user').value;
  const adminRule = document.getElementById('admin').value;
  // 管理员未输入校验规则时的提示,可根据需求调整
  if (!adminRule.trim()) {
    document.getElementById('checker').innerHTML = "请先输入管理员校验规则";
    return;
  }
  // 可选:如果不需要把管理员输入内容当做正则规则,只想做普通字符串包含匹配,建议先转义正则特殊字符
  const escapedRule = adminRule.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
  const reg = new RegExp(escapedRule, "i");
  const result = userInput.match(reg);

  if (result) {
    document.getElementById('checker').innerHTML = "correct";
  } else {
    document.getElementById('checker').innerHTML = "wrong";
  }
}

原有HTML代码无需修改可直接沿用。

补充说明:如果确实需要管理员输入正则规则进行匹配,可以删掉上面的正则转义逻辑,直接用adminRule生成正则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:15:08