【发布时间】: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