javascript - 正则表达式验证在函数调用时未返回正确结果

标签 javascript regex reactjs

我有一个组件使用正则表达式来检查电子邮件格式的有效性。我将此附加为输入的 onBlur 函数,该输入也会在页面加载后作为 React Hook useEffect 的一部分在加载时运行。该功能应该检查是否有空白字段并发出错误消息,提示用户输入电子邮件地址或选择退出。如果输入的电子邮件格式错误,则会触发一个单独的错误。在加载时,一切都按预期运行,并为空输入触发初始错误。该问题发生在用户输入输入字段并离开后。即使输入字段为空,该函数也会触发并设置提示用户输入有效电子邮件的错误。我已经交换了一些东西,最初试图通过将第一个检查设置为 if(value === undefined || '' 来解决这个问题,但到目前为止我得到了相同的行为。任何建议?

验证函数

function validateEmail(value) {
  const errors = { hasError: false }
  if (value === undefined || '') {
    errors.email = 'Enter a valid email address or select Email Opt Out'
    errors.hasError = true
    return errors
  }

  if (!/\S+@\S+\.\S+/.test(value)) {
    errors.email = 'Enter a valid email address'
    errors.hasError = true
    return errors
  }
  return errors
}

最佳答案

您能否在调用验证方法之前检查您的字符串是否为空?

  function onBlur(e) {
    var stringValue = e.target.value || '';

    if(stringValue !== '') checkIfCustomerEmailIsValid(e.target.value)
  }

关于javascript - 正则表达式验证在函数调用时未返回正确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56671867/

相关文章:

javascript - 在Javascript中使用正则表达式来匹配特殊符号

javascript - 在另一个字符串中搜索由非字母数字字符分隔的(任何)字符串

javascript - 需要 React 帮助 - 索引增加时组件不更新

javascript - 防止阻止使用 Facebook SDK 出现的弹出窗口

javascript - CSS Transitions 不适用于 Firefox

javascript - 浏览器如何处理源代码中的 CSS 颜色名称

javascript - 如何在 ReactJs 中动态改变元素的位置?

java - 如何从一行地址中提取邮政编码?

javascript - React/Redux 应用程序在 settimeout 内分派(dispatch)操作

javascript - react 谷歌地图未捕获类型错误 : Cannot read property 'overlayMouseTarget' of null