Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 24.02.2012
Сообщений: 71

Хранение регулярных выражений в объекте

25.12.2016, 13:01. Показов 696. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, тут такое дело, хочу сделать чтоб регулярный выражения хранились в объекте, т.е.
JavaScript
1
2
3
4
regex = {
            email: "^[a-zA-Z0-9_\.\-]{1,30}@[a-zA-Z0-9\.\-]{1,20}\.[a-zA-Z]{2,4}$",
            phone: '^([+]?[0-9\s-\(\)]{3,25})*$',
        }
ну как пример, так вот при попытки вытащить регулярку я получаю строку но без символов экранирования.
Например если я хочу вытащить регулярку phone то вместо '^([+]?[0-9\s-\(\)]{3,25})*$' получаю "^([+]?[0-9s-()]{3,25})*$" и как решить эту проблему, ума не приложу, вся надежда на вас, добрые форумчане)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2016, 13:01
Ответы с готовыми решениями:

Тестер регулярных выражений
Решил попробовать написать тестер регулярных выражений по типу как на этом сайте, только на порядок проще. Но проблема в том, что никак не...

Проверка последовательно нескольких регулярных выражений
Добрый день. Можно ли в JS каким-либо образом записать несколько разных регулярных выражений в одну переменную и затем последовательно их...

Шаблон регулярных выражений
Приветствую всех. Читаю книгу и столкнулся с неточностью. В главе регулярные выражения , приведен пример $pattern = /##isu/; ...

6
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.12.2016, 13:51
lehastydent, Если вы создаете регулярное выражение через new RegExp(), то все слэши нужно дополнительно экранировать. Либо пишите таким образом
JavaScript
1
2
3
4
5
var regex = {
  email: /^[a-zA-Z0-9_\.\-]{1,30}@[a-zA-Z0-9\.\-]{1,20}\.[a-zA-Z]{2,4}$/,
  phone: /^([+]?[0-9\s-\(\)]{3,25})*$/,
}
console.log(regex.email.test('email@mail.ru'));
0
0 / 0 / 1
Регистрация: 24.02.2012
Сообщений: 71
25.12.2016, 13:56  [ТС]
всё равно выдаёт без экранирования, да потом использую new RegExp() и он как раз выдаёт ошибку, так как без экранирования регулярка уже не верна, не знаю как с этим бороться
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.12.2016, 14:04
lehastydent, еще раз
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//если используем new RegExp()
regex = {
  email: "^[a-zA-Z0-9_\\.\\-]{1,30}@[a-zA-Z0-9\\.\\-]{1,20}\\.[a-zA-Z]{2,4}$",
  phone: '^([+]?[0-9\\s-\\(\\)]{3,25})*$',
};
var reg = new RegExp(regex.email);
console.log(reg.test('email@mail.ru'));
 
// другой способ
var regex2 = {
  email: /^[a-zA-Z0-9_\.\-]{1,30}@[a-zA-Z0-9\.\-]{1,20}\.[a-zA-Z]{2,4}$/,
  phone: /^([+]?[0-9\s-\(\)]{3,25})*$/,
}
console.log(regex2.email.test('email@mail.ru'));
https://jsfiddle.net/bj2tpbyf/
0
0 / 0 / 1
Регистрация: 24.02.2012
Сообщений: 71
25.12.2016, 14:47  [ТС]
такая ощибка Uncaught SyntaxError: Invalid regular expression: /^([+]?[0-9s-()]{3,25})*$/: Range out of order in character class
если использовать с двойными слешами т.е.
JavaScript
1
2
3
4
regex : {
            email: '^[a-zA-Z0-9_\\.\\-]{1,30}@[a-zA-Z0-9\\.\\-]{1,20}\\.[a-zA-Z]{2,4}$',
            phone: '^([+]?[0-9\\s-\\(\\)]{3,25})*$',
        },
в общем всё это я потом записываю в data поле и уже в последствии регулярки беру от туда. Кстати email срабатывает и без слешей, а вот с телефоном засада.
не как по другому нельзя решить проблему эту?

Добавлено через 5 минут
нельзя как то отключить экранирование, и чтоб всё воспринималось как просто строка?
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
25.12.2016, 14:48
lehastydent, У меня все работает. Покажите код, где вы достаете регулярные выражения.
0
0 / 0 / 1
Регистрация: 24.02.2012
Сообщений: 71
25.12.2016, 15:22  [ТС]
JavaScript
1
$(self).data('optionsTicket', settings);
так помещается

JavaScript
1
settingsForm = $(this).closest('form').data('optionsTicket');
так достаются всё настройки.
JavaScript
1
2
3
4
5
if($(input).data('regex')) {
                var regex_inp = new RegExp(String($(input).data('regex')));
            } else if(settingsForm.regex[name_inp])  {
                var regex_inp = new RegExp(settingsForm.regex[name_inp]);
            }
тут собственно значение
JavaScript
1
2
3
4
5
if(regex_inp != null && regex_inp != undefined ) {
                    if(!regex_inp.test(val_inp)) {
                        error_input = true;
                    }
                }
тут проверка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2016, 15:22
Помогаю со студенческими работами здесь

Конструктор регулярных выражений
Всем добрый вечер, подскажите, есть ли какой-либо конструктор, который заданный текст в регулярное выражение переводит?

Использование регулярных выражений
Доброго времени суток, уважаемые форумчане! Подскажите пожалуйста. Уже мозг сломал. Есть массив $arrayA, содержащий множество...

Массив регулярных выражений
Как сделать регулярное выражение которое бы считывало все теги и подтеги файла? Я делал вот такое -...

Запрет регулярных выражений
Что делать, если нельзя использовать регулярные выражения? Каким образом можно создать свой символьный язык для нахождения определенных...

Синтаксис регулярных выражений в C++
Помогите пожалуйста.... Исходный текст - "Miguel_Rivero: {FFCD00}текст" преобразуется в - "тест 10" засчет обрабочика: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru