Don';不允许在Javascript中的电子邮件验证中使用日语两位数字符
我把下面的正则表达式从。但是,如果我输入一个两位数的日语,就通过了验证。例如ハロー@hello.com正在通过验证 如何在验证中仅允许ASCII、罗马字符或单个数字 正则表达式: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
/^([^()\[\]\\,;:\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
他可能拼错了他的姓(singleg
)。regex尚未接受这一点。@Chi.C.J.RajeevaLochana会阻止大量有效电子邮件。验证电子邮件的最佳正则表达式是+@.+\..+
,用于过滤明显的打字错误。然后,向该地址发送一封电子邮件以实际验证它。试图验证一个电子邮件地址而不是简单的检查是毫无意义的,而且通常是不正确的,并且对那些你没有预料到的电子邮件的用户怀有敌意。