Вы можете создать свой собственный объект регулярного выражения в любое время, используя синтаксис new RegExp(str)
.
var str = "[+]?\\(?800\\)?[+ .]?123?[+ .]?1234";
var re = new RegExp(str);
re.exec("800.123.1234");
Обратите внимание, что вам может потребоваться двойная обратная косая черта в некоторых объявлениях, чтобы позволить одной обратной косой черте выжить в конструкторе регулярных выражений.
Но, если я действительно понял, что вы делаете, возможно, есть заранее заданное регулярное выражение, которое будет соответствовать тому, что вам нужно. Например, вы можете сопоставить все номера телефонов в вашем списке с этим:
\+?\(?\d\d\d\)?\.?\d\d\d\.?\d\d\d\d
zero or one plus sign
zero or one left paren
3 digits
zero or one right paren
zero or one period
three digits
zero or one period
four digits
Вот jsFiddle, который проверяет все ваши тестовые числа на соответствие регулярному выражению и извлекает только числа из каждой формы для создания нормализованной формы номера телефона: http://jsfiddle.net/jfriend00/43mqV/. Используется это регулярное выражение:
\+?\(?(\d\d\d)\)?\.?(\d\d\d)\.?(\d\d\d\d)
Это то же самое, что и выше, но оно также захватывает каждую группу чисел, поэтому мы можем выбрать только числа из сопоставленных результатов.