Получение regexp через ajax

68
20 апреля 2022, 22:40

у меня есть файл на сервере vajx.php содержащий переменные:

$PRO_REGULAR['name']['preg'] = '/^[а-яА-Я]{3}|[a-zA-Z]{3}$/';
$P_REGULAR['email']['preg'] = '/^((([0-9A-Za-z]{1}[-0-9A-z\.]{1,}[0-9A-Za-z]{1})|([0-9А-Яа-я]{1}[-0-9А-я\.]{1,}[0-9А-Яа-я]{1}))@([-A-Za-z]{1,}\.){1,2}[-A-Za-z]{2,})$/u';
if (isset($_REQUEST)) {
    if ($_GET['id'] == 'getpreg') {
    echo json_encode($P_REGULAR[$_GET['key']]);
    }   
}

и есть скрипт который делает запрос в этот файл

function getregular (v,k) {
$.ajax({
        url: 'vajx.php?id=getpreg&key='+k,
        method: "POST",
        success: function(e) {
            var ans = JSON.parse(e);
            
            if ((v.search(ang))+1) {
            console.log('yes');     
            } else {
            console.log('no');
            }
        }
    });
}
 getregular ('dantelol','name');

но по какой то причинет - регулярное выражение получается скриптом не как регулярно, а по моему как просто строка - в общем формат данных как я понял не тот, и search() или test() возвращают -1 - отсутствие совпаденией (или как в моем случае 0 - так как я к результату прибавляю 1)

подскажите как правильно получать такого рода данные через ajax

Answer 1

Если с сервера через JSON приходит строка типа '/[re]/', тогда придется использовать eval('/re/'). Если же вы можете настроить сервер, чтобы с него приходила строка с чистым кодом регулярки, без обрамляющих слешей (т.е. '[re]'), тогда можно использовать RegExp('[re]') или RegExp('[re]', 'u') с нужным флагом. Только позаботьтесь о нужном экранировании слешей. Если у вас регулярка /\w/, то в строке нужно передавать '\\w'.

READ ALSO
Разделить html фрагмент кода на две части

Разделить html фрагмент кода на две части

Необходимо разделить html фрагмент кода на две части, при этом теги не должны обрезаться

91
Ratchet не работает на боевом сервере

Ratchet не работает на боевом сервере

Поднят простенький веб-чат на ratchet по инструкцииЧат прекрасно работает на локалке, но на сервере при попытке подключения выдаёт ошибку 403

96
Форма не отправляет данные

Форма не отправляет данные

Не отправляются данные на другую страницу

116
Как сделать многоязычнось? php

Как сделать многоязычнось? php

есть сайт на php, вход регистрация и тд, собственно хотелось бы сделать его многоязычным, посдкажите как это нормально можно сделать, хочется...

147