javascript - 如何在 react 中从密码验证中删除空格

标签 javascript reactjs regex formik

在密码字段中,如果我给出“Password@345”,它被接受并且正确,但如果我给出“Password @ 345”,它也被接受,但它不应该被接受,因为条件是没有空格,如何删除空格我输入带有空格的密码,它应该会出错。

import React from "react";
import { Formik, Form, Field } from 'formik';
 import * as Yup from 'yup';
export default function DropDown() {
 const SignupSchema = Yup.object().shape({
    Password: Yup.string()
     .matches(
        "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#!@$%^&*()+=]).{8,20}$",
        `Should contains at least 8 characters and at most 20 characters\n 
        Should contains at least one digit\n 
        Should contains at least one upper case alphabet\n 
        Should contains at least one lower case alphabet\n
        Should contains at least one special character which includes !@#$%&*()+=^\n
        Should doesn't contain any white space`
        )
      .required('password is required'),
   
  });
  return (
    <>
     
     <Formik
       initialValues={{
         Password: '',
        }}
       validationSchema={SignupSchema}
       onSubmit={values => {
         console.log(values);
       }}
     >
       {({ errors, touched }) => (
         <Form>
           <Field name="Password" placeholder="type password" autoFocus="true" autoComplete="off"/>
           {errors.Password && touched.Password ? (
             <div style={{color:"red"}}>{errors.Password}</div>
           ) : null}
          
          <br/><br/>  
          
           <button type="submit" >Submit</button>
         </Form>
       )}
     </Formik>
    </>
  );
}

最佳答案

通过使用yup,您可以在架构上定义多个匹配,因此在您的问题中,您可以定义一个单独的匹配来检查密码是否包含空格 或不,然后应用其他验证条款。就像下面的例子:

const SignupSchema = Yup.object().shape({
  Password: Yup.string()
    .matches(/^\S*$/, 'Whitespace is not allowed')
    .matches(
      '^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#!@$%^&*()+=]).{8,20}$',
      `Should contains at least 8 characters and at most 20 characters\n 
      Should contains at least one digit\n 
      Should contains at least one upper case alphabet\n 
      Should contains at least one lower case alphabet\n
      Should contains at least one special character which includes !@#$%&*()+=^\n
      Should doesn't contain any white space`
    )
    .required('password is required'),
});

关于javascript - 如何在 react 中从密码验证中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70430896/

相关文章:

javascript - node.js 正则表达式提取事件

Javascript无法增加select的值

javascript - SCORM 托管跨源

javascript - 使用 redux-thunk 和 redux-observable

reactjs - 无法调用 React ExoticComponent

regex - 使用正则表达式调用替换分隔符内的模式

python - 使用 re.sub() 时无效的组引用

javascript - 在 Three.js 中动态地将一个网格替换为另一个新网格

javascript - 当数据缓存在本地时,回流避免每次都命中服务器

javascript - 我自己的函数中的 Node.js 请求模块出现问题