Подстрока соответствия JavaScript после RegExp

Абсолютно, стиль важен. Особенно когда дело доходит до вещей как расположение с отступом и пробел. Код должен быть легко читаемым человеком, так как это - человек, который должен поддержать тот код позже. Чем более читаем код, тем легче поддержать и выше, качество того кода в конечном счете станет.

существует психологический фактор, который входит для игры со стилем кода. Когда код "ужасен" и тверд читать/понимать, Вы хотите взять меньше владения того кода, таким образом, существует меньше персонального стимула сделать Вашу лучшую работу. Поскольку код становится более читаемым/легким для понимания, Вы чувствуете себя лучше о работе, которую Вы сделали и хотите взять больше владения. Чем больше владения кода, который Вы чувствуете, тем более лично важный это становится для записи лучшего кода.

До, как Microsoft ответила, я отвечу точно таким же образом. Я думаю, что их ответ не призывания обратно его был, вероятно, отлично выровнен по ширине (и, возможно, были другие факторы, чем отсутствие стиля кода, хотя я уверен, что это было участником).

8
задан Mike 1 March 2019 в 15:40
поделиться

6 ответов

А как насчет:

function getNumber(input) { // rename with a meaningful name 
    var match = input.match(/^.*-mr(\d+)$/);

  if (match) { // check if the input string matched the pattern
    return match[1]; // get the capturing group
  }
}

getNumber("something30-mr200"); // "200"
2
ответ дан 5 December 2019 в 05:45
поделиться

Вы можете использовать регулярное выражение, подобное тому, которое дал вам Барт, но я предлагаю использовать совпадение, а не замену, поскольку в случае совпадение не найдено, результатом является вся строка при использовании replace, а при использовании соответствия - null, что кажется более логичным. (хотя в общем).

Что-то вроде этого может помочь:

functiong getNumber(string) {
    var matches = string.match(/-mr([0-9]+)/);
    return matches[1];
}
getNumber("something30-mr200");
18
ответ дан 5 December 2019 в 05:45
поделиться

Почему не просто:

-mr(\d+)

Затем получить содержимое группы захвата?

4
ответ дан 5 December 2019 в 05:45
поделиться

Как насчет того, чтобы найти позицию -mr, а затем получить оттуда подстроку + 3?

Это не регулярное выражение, но, похоже, с вашим описанием работает?

0
ответ дан 5 December 2019 в 05:45
поделиться

Это может сработать для вас:

// Perform the reg exp test
new RegExp(".*-mr(\d+)").test("something30-mr200");
// result will equal the value of the first subexpression
var result = RegExp.$1;
1
ответ дан 5 December 2019 в 05:45
поделиться
var result = "something30-mr200".split("mr")[1];

или

var result = "something30-mr200".match(/mr(.*)/)[1];
4
ответ дан 5 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: