我正在尝试通过针对表达式进行检查来验证用户电子邮件。但我得到的结果对所有条目都无效。
更新代码
class dummytest extends Component{
constructor(props){
super(props);
this.state = {
email :'',
validated: false ,
}
};
go = () => {
const reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (reg.test(this.state.email) === true){
alert( valid);
}
else{
alert();
}
}
render(){
return(
<View style={{alignSelf:'center',marginTop:100}}>
<TextInput autoCapitalize="none" autoCorrect={false} style={{height:20,width:200,backgroundColor:'blue'}} value={this.setState.email}/>
<Button onPress={this.go.bind(this)}>
<Text> GO </Text>
</Button>
</View>
);
}
}
答案 0 :(得分:33)
好的,我的代码正常运行,您可以在下方查看每个用户输入的电子邮件验证信息。
您的功能部分:
Response responseData;
await Task.Run(() =>
{
responseData = JsonConvert.DeserializeObject<Response>(content);
// preform your Realm database add/updates,
// remember you are now on a different thread so get a new Realm Instance
});
您的TextInput组件:
validate = (text) => {
console.log(text);
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
if(reg.test(text) === false)
{
console.log("Email is Not Correct");
this.setState({email:text})
return false;
}
else {
this.setState({email:text})
console.log("Email is Correct");
}
}
答案 1 :(得分:1)
看起来像语法错误。您已在validate
的定义中直接使用名为go
的嵌套函数。
作为一般规则,我建议保持缩进和大括号的一致性,以便一目了然地发现这些错误 - 当括号不排成一个问题时。
然后,您可以采取一些措施来实现此代码:
validate (email)
行以及随附的关闭
支架go
类似的东西:
this.state = {
email :'',
validated : false,
}
和...
go = () => {
if (this.state.email.test(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)==0) {
this.setState({ validated : true });
} else {
this.setState({ validated : false });
}
}
答案 2 :(得分:0)
validate = (text) => {
console.log(text);
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
if(reg.test(text) === false)
{
alert("Email is Not Correct");
this.setState({email:text})
return false;
}
else {
this.setState({email:text})
alert("Email is Correct");
}
}
You can put this function validate in onChangeText propert of TextInput
答案 3 :(得分:0)
具有验证电子邮件的功能(可能在要重复使用的某个单独模块中),
this.personService.getMyList().subscribe( r => console.log(r))
您可以验证电子邮件输入,
实时验证:
export function validateIsEmail(email) {
return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email);
}
在此示例中,setEmail和setInlineValidations是useState挂钩(例如 <TextInput
...
onChangeText={emailText => {
setEmail(emailText);
setInlineValidations({
...inlineValidations,
emailNotValid: !validateIsEmail(emailText),
});
}}
/>
)定义的状态设置器,您当然可以使其适应状态处理方式。
答案 4 :(得分:0)
isEmailValid = () => {
const expression = /(?!.*\.{2})^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([\t]*\r\n)?[\t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([\t]*\r\n)?[\t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
return expression.test(String(this.state.email_id).toLowerCase())
}
答案 5 :(得分:0)
通过使用名为 validator
的 npm 包,无需编写大量代码即可轻松验证电子邮件npm i validator
const validator = require('validator');
validator.isEmail('john.doe@example.com'); // true
有关更多信息,请参阅文档: https://www.npmjs.com/package/validator
答案 6 :(得分:-1)
我已经创建了一个Helper类并且这样做:
export default class Helper {
static isEmailValid(email) {
let reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
return reg.test(email) == 0;
}
}
通过以下方式调用此方法:
if (Helper.isEmailValid(this.state.emailText)) {
console.log("Email is correct");
} else {
console.log("Email is not correct");
}