【问题标题】:Checking input for admin and user using Regular Expression使用正则表达式检查管理员和用户的输入
【发布时间】:2023-03-13 00:49:02
【问题描述】:

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

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>

【问题讨论】:

  • 您正在使用 new RegExp(str2.value, "i"); 请注意,在 RegExp 构造函数中,您必须使用双转义反斜杠 escape meta characters 来匹配它们,如果您不想部分匹配,则必须使用锚点 @987654325 @和$
  • 什么是str2.value?它总是一个空字符串,因为你在调用函数之前试图抓住它。总是。用户是否在 textarea 中输入了任何内容都没有关系。
  • 最有可能的是,您在加载 DOM 时获得了 input 值,而不是在您单击按钮时。所以它们都是空的,当然,空字符串与空字符串的正则表达式匹配。尝试在 sample 函数中移动所有代码
  • 你是最好的先生 @Andy 非常感谢你
  • 非常感谢 @derpirscher 先生,它有效

标签: javascript html regex match


【解决方案1】:

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

另一个问题是,当您检查一个stirng 是否包含另一个带有正则表达式的字符串时,您应该考虑str2.value 中的特殊字符。如果没有properly escaping 它、(?,甚至.,都会产生不受欢迎的行为。您可以在此处使用Contains case insensitive 帖子中的简单非正则表达式解决方案,因为您在此处使用固定字符串值。

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>

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多