Поддерживает ли JavaScript составные регулярные выражения? - PullRequest
2 голосов
/ 01 мая 2019

Например, если я хочу сопоставить ips, могу ли я разбить его так:

const octet = /\d{1,3}/;
const ip = /{octet}\.{octet}\.{octet}\.{octet}/;

Ответы [ 2 ]

8 голосов
/ 01 мая 2019

Вы можете смешивать, используя new RegExp() и литералы шаблона, чтобы сделать это похожим.

Ниже приведен пример.

const octet = /\d{1,3}/;
const octetS = octet.source;
const ip = new RegExp(
  `^${octetS}\\.${octetS}\\.${octetS}\\.${octetS}$`);

const ips = [
  '127.0.0.1',
  '10.0.2',
  '12.10.2.5',
  '12'];
  
for (const checkip of ips)
  console.log(`IP: ${checkip} = ${ip.test(checkip)}`);
5 голосов
/ 01 мая 2019

Используя уже объявленный литерал регулярного выражения, вы можете использовать его свойство source, чтобы получить версию без тегов.Используя литералы шаблона в новом конструкторе RegExp, создайте новое выражение.

const octet = /\d{1,3}/;
const octetSource = octet.source;
const ip = new RegExp(`^${octetSource}\\.${octetSource}\\.${octetSource}\\.${octetSource}$`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...