首页 > 解决方案 > 使用正则表达式检查管理员和用户的输入

问题描述

我正在尝试创建一个函数,如果它有管理员的输入,它将检查用户的输入。即使它不正确,它也会继续显示正确​​,但是当我对用户输入的值和管理员进行硬编码时,它会检查输出是否正确。我希望用户输入值并检查它是否正确。

var str = document.getElementById('user');
var str2 = document.getElementById('admin');
var reg = new RegExp(str2.value, "i");
var result = str.value.match(reg);

function sample() {
  if (result) {
    document.getElementById('checker').innerHTML = "correct";
  } else {
    document.getElementById('checker').innerHTML = "wrong";
  }
}
<textarea id="admin" placeholder="admin" rows="5"></textarea>
<textarea id="user" placeholder="user" rows="5"></textarea>
<textarea id="checker"></textarea>
<br>
<button style="height: 50px; width: 100px;" onclick="sample()">Check</button>

标签: javascripthtmlregexmatch

解决方案


str2.valueand在你的函数中str.value没有任何值,sample()因为它们没有在函数范围内定义。从输入文本框中读取这些值的代码行应放在sample()函数体内。

另一个问题是,当您使用正则表达式检查搅拌是否包含另一个字符串时,您应该考虑str2.value. 如果没有正确地转义它,(或者?,甚至.会产生不受欢迎的行为。您可以在此处使用包含不区分大小写的帖子中的简单非正则表达式解决方案,因为您在此处使用固定字符串值。

function sample() {
  var str = document.getElementById('user');
  var str2 = document.getElementById('admin');

  if (str.value.toUpperCase().indexOf(str2.value.toUpperCase()) === -1) {
    document.getElementById('checker').innerHTML = "correct";
  } else {
    document.getElementById('checker').innerHTML = "wrong";
  }
}
<textarea id="admin" placeholder="admin" rows="5"></textarea>
<textarea id="user" placeholder="user" rows="5"></textarea>
<textarea id="checker"></textarea>
<br>
<button style="height: 50px; width: 100px;" onclick="sample()">Check</button>


推荐阅读