Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Don';不允许在Javascript中的电子邮件验证中使用日语两位数字符_Javascript_Reactjs_Regex - Fatal编程技术网

Don';不允许在Javascript中的电子邮件验证中使用日语两位数字符

Don';不允许在Javascript中的电子邮件验证中使用日语两位数字符,javascript,reactjs,regex,Javascript,Reactjs,Regex,我把下面的正则表达式从。但是,如果我输入一个两位数的日语,就通过了验证。例如ハロー@hello.com正在通过验证 如何在验证中仅允许ASCII、罗马字符或单个数字 正则表达式:/^([^()\[\]\\,;:\s@“]+(\.[^()\[\]\\,;:\s@”]+)*(“+”)@(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}]);([a-zA Z-Z-0-9]+}.[a-zA Z]+/$> 理想情况: 攻击。titan@gm

我把下面的正则表达式从。但是,如果我输入一个两位数的日语,就通过了验证。例如ハロー@hello.com正在通过验证

如何在验证中仅允许ASCII、罗马字符或单个数字

正则表达式:
/^([^()\[\]\\,;:\s@“]+(\.[^()\[\]\\,;:\s@”]+)*(“+”)@(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}]);([a-zA Z-Z-0-9]+}.[a-zA Z]+/$>

理想情况:

  • 攻击。titan@gmail.com ✅
  • black@clover.com ✅
  • ハロー@ハロー.通用域名格式❌
  • ハロー@你好❌
  • 嗨123@你好❌
这是我的全部代码,我正在使用React:

utils.tsx

export const isEmail = email => {
  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  if (re.test(String(email).toLowerCase())) {
    return true;
  }
  return false;
};
import React from 'react';
import {isEmail} from '../utils'
export interface ComponentInterface {
 emailInput:string
 setEmailInput: (e: any) => void
}
 
const Component : React.FC<ComponentInterface> = (props:ComponentInterface) => {
 const [inputErrorState, setInputErrorState] = useState(false)
  const handleOnChange = (e) => {
    if (inputErrorState) {
      setInputErrorState(false)
    }
    props.setEmailInput(e.target.value)
  }
  const handleOnSubmit = () => {
    const isValid = isEmail(props.emailInput)
    setInputErrorState(isValid ? false : true)
  }
  return ( <div> 
           <input
            type='email'
            id='props.emailInput'
            value={emailInput}
            onChange={handleOnChange}
          ></input>
        {inputErrorState && (
          <p>Your error message</p>
        )}
 </div> );
}
 
export default Component;

在正则表达式中,在[]内,如果使用-可以指定一个范围。我注意到您已经从电子邮件名称中删除了几个字符。现在只需添加要删除的unicode范围

比如:
[^\u0080-\uFFFF]


/([^()\[\]\\,;:\s@“\u0080-\uFFFF]+(\.[^()\[\]\,;:\s@“\u0080-\uFFFF]+)*)(“+”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3]}.[1,3]}.[1,3]}.[a-Z]+]ハロー@hello.com
不是有效的电子邮件地址?请尝试
^[a-Za-z0-9.]+@.+\[a-Za-z0-9]+$
这真的是一个值得考虑的问题吗?发封电子邮件就行了。这是你的验证。使用不允许有效电子邮件的复杂正则表达式有什么用?另一方面,您也不能使用正则表达式来验证电子邮件在语法上是否正确。例如,如果Fred Bloggs输入
fredblogs@email.com
他可能拼错了他的姓(single
g
)。regex尚未接受这一点。@Chi.C.J.RajeevaLochana会阻止大量有效电子邮件。验证电子邮件的最佳正则表达式是
+@.+\..+
,用于过滤明显的打字错误。然后,向该地址发送一封电子邮件以实际验证它。试图验证一个电子邮件地址而不是简单的检查是毫无意义的,而且通常是不正确的,并且对那些你没有预料到的电子邮件的用户怀有敌意。