Как получить все группы захвата RegEx в виде одной строки?

1

Я сейчас на https://regex101.com/ и имею следующие введенные (с глобальным флагом):

REGULAR EXPRESSION: ([A-Z])
TEST STRING: ABCdefGHI

Справа в Match Information о Match Information следующая строка находится в ABCGHI группе: ABCGHI

Я пытаюсь воспроизвести это на JavaScript, и у меня возникают проблемы:

var myString = "ABCdefGHI";
var myRegexp = /([A-Z])/g;
var match = myRegexp.exec(myString);
console.log(match[1]);

Вышеприведенное просто возвращает A Желаемый результат: ABCGHI

Я немного огляделся, и, похоже, есть способ сделать это, перейдя через результирующий массив группировки RegEx, нажав все элементы, а затем выполнив объединение строк. Мне интересно, если это полностью необходимо, или если я пропущу что-то очевидное.

  • 0
    На regex101 вы можете «сохранить регулярное выражение», и оно генерирует ссылку на ваше регулярное выражение и тестовую строку, которой вы можете поделиться. Поскольку я не получаю те же результаты, что и вы, вам может быть полезно добавить эту ссылку в свой вопрос.
Теги:

1 ответ

4
Лучший ответ

Вы можете использовать array.join('') где array - возвращаемое значение string.match(re):

var myString = "ABCdefGHI";
var myRegexp = /([A-Z])/g;

var result = myString.match(myRegexp).join('');

console.log(result);
//=>"ABCGHI"

Или, если вам разрешено менять регулярное выражение, используйте отрицание:

var repl = myString.replace(/[^A-Z]+/, '')
//=> "ABCGHI"
  • 1
    Хорошо, это достаточно чисто, я полагаю. Мне было интересно, есть ли способ получить результат в одной группе, но если нет, то я справлюсь с этим.
  • 1
    Смотрите обновленный ответ, может быть, вы ищете string.replace
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню