У меня есть следующие Regex, что исходит от атрибута данных на HTML-элемент:JQuery Regex из строки
/^$|^[0-9]{2}.[0-9]{4}$/g
Когда я (вручную) делать:
/^$|^[0-9]{2}.[0-9]{4}$/g.test('01.2012');
Он работает и возвращает true
.
Когда я поставил Regex в переменной следующим образом:
var inputRegex = $(this).attr('data-validation');
И сделать:
inputRegex.test(input);
я получаю:
inputRegex.test не является функцией.
Я знаю, что это потому, что inputRegex является строка и строка не имеет функцию тестирования, но когда я создаю объект RegExp (new RegExp($(this).attr('data-validation')
) он разбивает мое регулярное выражение, убегая:
/\/^$|^[0-9]{2}.[0-9]{4}$\/g/
Как я могу использовать значение атрибута data как регулярное выражение? Обратите внимание, что я не могу сделать: var regex = new RegExp(string, 'g');
, потому что регулярное выражение (ы) задано из атрибута.
Вы не должны использовать '/ G' с' RegExp.test'. –
Когда вы читаете значение из 'data-validation', оно считывается как строка. Вы можете ссылаться на следующую ссылку для [как создать регулярное выражение из строки] (http://stackoverflow.com/questions/4371565/can-you-create-javascript-regexes-on-the-fly-using-string-variables) – Rajesh
Это не имеет никакого отношения к jQuery. –