JavaScript - Получение конкретного 9-значного значения из строки с помощью регулярного выражения - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь получить значение из 9 чисел из строки.

Строки никогда не будут иметь одинакового содержимого, но всегда будет группа чисел длиной 9 символов, которые я пытаюсь получить в переменную.

https://jsbin.com/gabuhilexu/edit?js,console

Я пробовал несколько примеров регулярных выражений

var first = "https://www.wrike.com/open.htm?id=119464511";
var second = "119464511: Hello world";
var third = "Hello world: 119464511 - Testing";

var broken = first.split('https://www.wrike.com/open.htm?id=');

var reg = /([^0-9])(?:11(1\d)1(\d{4}))([^0-9])/g;

console.log(first.split(reg));
console.log(reg.test(second));

Есть два примера того, как в настоящее время доставляются строки, и я пытаюсь получить значение 119464511 в переменную.

1 Ответ

2 голосов
/ 08 июля 2019

RegEx, который вы пробовали, проблематичен по ряду причин.

  • Во-первых, он использует группу без захвата;это фактически сводит на нет все, что вы ищете.
  • Во-вторых, требуется, чтобы первый символ был не числовым, что не относится к примеру, который вы сохранили в переменной second. * 1007.*
  • В-третьих, жестко задан поиск нескольких 1 в пределах группы без захвата, но поскольку id является фактически случайным (как вы указали), это не будет работать для подавляющего большинствазначений.

Для отслеживания третьей маркированной точки предоставленный вами RegEx будет сопоставлять только значения, соответствующие следующему шаблону: A111#1####A, где A представляет любой нечисловой символ,и 1 жестко закодирован.# - единственные места, где вы ищите любую цифру в диапазоне 0-9.

Если вы просто пытаетесь получить цифры, вы можете использовать простой RegEx /\d{9}/g,который находит любые и все группы из 9 числовых символов в строке, которую вы предоставляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...