Select2: как предотвратить сортировку тегов

Вы можете преобразовать его в строку и создать выражение, вызвав new RegExp():

var myRE = new RegExp (['^(([^<>()[\]\\.,;:\\s@\"]+(\\.[^<>(),[\]\\.,;:\\s@\"]+)*)',
                        '|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.',
                        '[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\\.)+',
                        '[a-zA-Z]{2,}))$'].join(''));

Примечания:

  1. при преобразовании литерала выражения на строку, необходимую для удаления всех обратных косых черт, когда обратная косая черта потребляется при оценке строкового литерала . (См. Комментарий Kayo для более подробной информации.)
  2. RegExp принимает модификаторы в качестве второго параметра /regex/g => new RegExp('regex', 'g')

[Дополнение ES20xx (тегированный шаблон )]

В ES20xx вы можете использовать тегированные шаблоны . См. Фрагмент.

Примечание:

  • Недостаток заключается в том, что вы не можете использовать простые пробелы в строке регулярного выражения (всегда используйте \s, \s+, \s{1,x}, \t, \n и т. д.).

(() => {
  const createRegExp = (str, opts) => 
    new RegExp(str.raw[0].replace(/\s/gm, ""), opts || "");
  const yourRE = createRegExp`
    ^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|
    (\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|
    (([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$`;
  console.log(yourRE);
  const anotherLongRE = createRegExp`
    (\byyyy\b)|(\bm\b)|(\bd\b)|(\bh\b)|(\bmi\b)|(\bs\b)|(\bms\b)|
    (\bwd\b)|(\bmm\b)|(\bdd\b)|(\bhh\b)|(\bMI\b)|(\bS\b)|(\bMS\b)|
    (\bM\b)|(\bMM\b)|(\bdow\b)|(\bDOW\b)
    ${"gi"}`;
  console.log(anotherLongRE);
})();

13
задан Ivan Z 17 July 2015 в 06:37
поделиться