Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Javascript 用于电子邮件验证的RegExp未正确读取字符串(使用React,无JSX)_Javascript_Regex_Reactjs_Email Validation - Fatal编程技术网

Javascript 用于电子邮件验证的RegExp未正确读取字符串(使用React,无JSX)

Javascript 用于电子邮件验证的RegExp未正确读取字符串(使用React,无JSX),javascript,regex,reactjs,email-validation,Javascript,Regex,Reactjs,Email Validation,我正在尝试根据传递的电子邮件的有效性启用或禁用我的“提交”按钮。但是,我使用的RegExp表达式没有正确读取字符串。我试着用email.length>0来测试我的isWorking()函数,以确保传递给isWorking()的内容确实是一个字符串,我们在这方面做得很好,但是不管它接收到什么输入,RegExp总是返回false。我在这个应用程序中使用React而不使用JSX。任何帮助都将不胜感激。非常感谢你 const validEmailRegex = RegExp(/^(([^<

我正在尝试根据传递的电子邮件的有效性启用或禁用我的“提交”按钮。但是,我使用的RegExp表达式没有正确读取字符串。我试着用email.length>0来测试我的isWorking()函数,以确保传递给isWorking()的内容确实是一个字符串,我们在这方面做得很好,但是不管它接收到什么输入,RegExp总是返回false。我在这个应用程序中使用React而不使用JSX。任何帮助都将不胜感激。非常感谢你

    const validEmailRegex = RegExp(/^(([^<>()\[\]\\.,;:\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,}))$/);

    class Signup extends React.Component {

    constructor() {
       super();
       this.state = {
       email: ""
    };
       this.handleSubmit = this.handleSubmit.bind(this);
    }

    isWorking () {
       const email = event.target;
       //if (email.length > 0) {
       //  return false;
       // }
       // return true;

    if (validEmailRegex.test(email) === true) {
       return false;
       }
       return true;
    }

    handleSubmit(event) {
        event.preventDefault();

    if (!event.target.checkValidity()) {
        this.setState({
        invalid: true,
        displayErrors: true, 
    });
    return;
    }

    const form = event.target;
    const data = new FormData(form);

    for (let name of data.keys()) {
        const input = form.elements[name];
        const parserName = input.dataset.parse;
        console.log('parser name is', parserName);

        if (parserName) {
        const parsedValue = inputParsers[parserName](data.get(name));
        data.set(name, parsedValue);
        }
    }

    this.setState({
        res: stringifyFormData(data),
        invalid: false,
        displayErrors: false, 
    });
}

  render() {

     const { res, invalid, displayErrors } = this.state;

     //pass data to the button for disabling or not 
     const isEnabled = this.isWorking();

      return (

      React.createElement("div", { className: "container" },

      React.createElement("div", { className: "row" },

        React.createElement("form", { onSubmit: this.handleSubmit, noValidate: true, className: displayErrors ? 'displayErrors' : '' },
          React.createElement("input", { className: "form-control", name: "formEmail", id: "formEmail", type: "email", placeholder: "email"}), 
        ),

        React.createElement("span", { className: "span"},
          React.createElement("fieldset", { className: "form-group" },
            React.createElement(Link, { className: "nav-link", activeClassName: "nav-link-active", to: "/contact" },

              React.createElement("button", { className: "button1", disabled: isEnabled, type: "button"}, "next")
            ),
          )
        ),
    ),
  )
);
}
}
const validEmailRegex=RegExp(/^([^()\[\]\\,;:\s@“]+(\.[^()\[\]\,;:\s@+)*)(“+”)@(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.+];
类注册扩展了React.Component{
构造函数(){
超级();
此.state={
电子邮件:“
};
this.handleSubmit=this.handleSubmit.bind(this);
}
正在工作(){
const email=event.target;
//如果(email.length>0){
//返回false;
// }
//返回true;
如果(ValidMailRegex.test(电子邮件)==true){
返回false;
}
返回true;
}
handleSubmit(事件){
event.preventDefault();
如果(!event.target.checkValidity()){
这是我的国家({
无效:对,
显示错误:正确,
});
返回;
}
const form=event.target;
const data=新表单数据(表单);
for(让data.keys()的名称为){
常量输入=form.elements[名称];
const parserName=input.dataset.parse;
log('parser name's',parserName');
if(parserName){
const parsedValue=inputParsers[parserName](data.get(name));
data.set(名称、解析值);
}
}
这是我的国家({
res:stringifyFormData(数据),
无效:false,
显示错误:false,
});
}
render(){
const{res,无效,displayErrors}=this.state;
//将数据传递到按钮以禁用或不禁用
const isEnabled=this.isWorking();
返回(
React.createElement(“div”,{className:“container”},
React.createElement(“div”,{className:“row”},
React.createElement(“form”{onSubmit:this.handleSubmit,noValidate:true,className:displayErrors?'displayErrors':''},
React.createElement(“输入”,{className:“表单控件”,name:“formEmail”,id:“formEmail”,键入:“email”,占位符:“email”}),
),
React.createElement(“span”,{className:“span”},
React.createElement(“fieldset”,{className:“form group”},
React.createElement(链接,{className:“导航链接”,activeClassName:“导航链接活动”,到:“/contact”},
React.createElement(“button”{className:“button1”,disabled:isEnabled,键入:“button”},“next”)
),
)
),
),
)
);
}
}

您的
正在工作()
不会从任何地方接收事件。此外,event.target将是一个HTML元素,绝对不是一个输入值。对于表单,您可以执行
event.target.elements[“”]
(此处,如果是formEmail,则输入的名称)来获取输入值。

您的
正在工作()
不会从任何地方接收事件。此外,event.target将是一个HTML元素,绝对不是一个输入值。对于表单,您可以使用
event.target.elements[“”]
(此处,如果是formEmail,则输入的名称)来获取输入值。

您好,非常感谢您的帮助!所以你的意思是我应该做:isWorking(event){const email=event.target.elements(“formEmail”)?我试过了,但它实际上破坏了代码…再次非常感谢!!如果你有一个IDE,设置一个调试器将是最好的事情。因为我可能没有更多的clueHi,非常感谢你的帮助!所以你说的是我应该做的:isWorking(event){const email=event.target.elements(“formEmail”)?我试过了,但它实际上破坏了代码…再次非常感谢!!如果你有一个IDE,设置一个调试器将是最好的事情。因为我可能没有任何线索了