Используйте регулярное выражение в файле JSX в (React + Material-ui)

Я пытаюсь использовать RegEx для проверки материалов на основе форм. Я использую мой Regex на основе JS, но он не работает. Зачем?

Ниже приведен фрагмент моего файла template.jsx. my-form - это просто оболочка для компонента Formy Material-UI.

import {myForm, TextField} from '@react-component/my-form';

export default (props) => {
 } = props;
   const emailRegex = new RegExp('/\S+@\S+\.\S+/');
    const phoneRegEx = new RegExp('/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-/\s\.]{0,1}[0-9]{4}$/');
    return (
<myForm>
  <TextField id="smsNumber" value={userInfo.smsNumber} name="smsNumberName" required requiredError="Mobile is a required field." validations={{matchRegexp:phoneRegEx}} validationErrors={{matchRegexp:'Enter a valid mobile.'}} onChange={changeSmsNumber} floatingLabelText={t('userProfile.mobile', "Mobile")} floatingLabelFixed={true} hintText={t('userProfile.mobile', "Mobile")}/>
</myForm>
   );
};

Этот код всегда выдает сообщение об ошибке "Введите правильный мобильный телефон".

1 ответ

Решение

Вам нужно использовать буквенное обозначение регулярного выражения и привязать регулярное выражение электронной почты:

 const emailRegex = /^\S+@\S+\.\S+$/;
                    ^^            ^^

И это phoneRegEx исправить:

const phoneRegEx = /^[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3}[-/\s.]?[0-9]{4}$/;

Обратите внимание, что {0,1} ограничивающий квантификатор такой же, как ? (1 или 0 вхождений). Нет необходимости избегать точки внутри [...] класс символов, он уже соответствует буквальной точке там.

Другие вопросы по тегам