javascript - 为什么我的正则表达式电子邮件验证不起作用?
问题描述
我正在尝试使用正则表达式创建一个超级简单的电子邮件验证器。我已经在 SO 上查看了类似的问题,并在其他地方查找了其他解决方案,例如 W3resource。我不确定我是否忽略了某些内容,或者我是否输入了错误的内容。我遇到的问题是,无论我输入正确还是错误的电子邮件,都没有任何反应。我的两个警报都不起作用,页面保持空白。
这是我的 Javascript 代码。
function checkmail(inputText)
{
var emailregex = /^\w[-._\w]*\w@\w[._\w]*\w\.\w{2,8}$/;
if(inputText.value.match(emailregex)) {
alert("You have entered a valid email address!");
return true;
} else {
alert("You have entered an invalid email address!");
return false;
}
}
这是我的相关 HTML 代码。
<div class="mail">
<center>
<p>Please enter an email address.</p>
<form id="inputemail">
<input type='text' name='input'/>
<input type="submit" name="submit" value="Verify" onclick="checkmail(inputText)"/>
</form>
</center>
</div>
<script src="regexobj.js"></script>
</body>
</html>
解决方案
您需要指定从何处获取数据。在您的代码中,您有一个定义变量“inputText”的函数。在您的代码中,没有数据被发送到函数并且函数无法获取数据并返回错误。
要解决此问题,您需要指定要获取的数据,例如:
function checkmail(){
var input = document.querySelector("input[name='input']");
var emailregex = /^\w[-._\w]*\w@\w[._\w]*\w\.\w{2,8}$/;
if(input.value.match(emailregex)) {
alert("You have entered a valid email address!");
return true;
} else {
alert("You have entered an invalid email address!");
return false;
}
}
在此示例中,该函数将搜索具有输入名称的输入字段。input.value
将包含来自输入字段的数据。
在您的 HTML 文件中,您需要将按钮提交更改为
<input type="submit" name="submit" value="Verify" onclick="checkmail()"/>
我已经测试了上面的代码,它应该可以相应地工作。我希望对您的问题有所帮助。
编辑:提交表单时,页面将自动重新加载,如果您想留在同一页面上并发出警报,您可以在 HTML 文件中进行以下更改:
- 删除提交按钮上的 onsubmit 属性
<input type="submit" name="submit" value="Verify"/>
- 将以下 onsubmit 函数添加到您的表单
onsubmit="event.preventDefault(); checkmail();"
当您提交表单时,表单将首先阻止页面重新加载,然后执行您的功能。当您单击警报时,页面不会重新加载并删除表单中插入的值。
推荐阅读
- java - @Valid 不工作 @PostMapping 春季启动
- python - JWT 中的令牌声明是什么?
- haskell - 为什么这个词法分析器不解析这个输入?
- php - 使用嵌套子PHP转换多维字符串数组
- python - Python:将 n 维矩阵/张量实现为一维元素列表
- cordova - 使用cordova-plugin-camera拍照或从图库中选择图像后重新加载cordova framework7页面
- javascript - setInterval 中的 setTimeout 不能正常工作
- java - 使用 JpaRepository SpringBoot 在两个类之间进行映射
- python - 基于来自外部对象的索引聚合组
- brightway - 找不到迁移生物圈-2-3-类别