Группировка регулярного выражения BackReferences

У меня есть следующий RegEx

id=(.*?) | id = "(.*?)"

Причина в том, что я пытаюсь заменить идентификаторы из DOM браузеров с помощью JavaScript. IE, однако, удаляет кавычки из атрибутов элементов, поскольку, похоже, они не требуются в DOM.

Проблема, с которой я сталкиваюсь, заключается в том, что обратные ссылки из каждого альтернативного оператора находятся в отдельных группах ($ 1 и $ 2), поскольку совпадение только одно ИЛИ другое, могу ли я вернуть обе обратные ссылки как одну обратную ссылку?

Обновлено:

<div id = "test1" /><div id=test2 />

будет соответствовать следующим образом

    match         |  $1   |   $2
--------------------------------
    id = "test1"    | test1 |
    id=test2      |       |  test2

Я просто хочу, чтобы обе обратные ссылки были добавлены к $ 1

Можете ли вы опубликовать пример, показывающий проблему?

Per Hornshøj-Schierbeck 08.01.2009 15:01

Отредактировали вопрос

Sheff 08.01.2009 15:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
686
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

как насчет:

id = "?(.*?)"?

(возможно, это должно быть [^ "] - я не тестировал)

Это будет соответствовать только id = "и пропустить остальные

Sheff 08.01.2009 15:08

должно было быть "? ([^"] *)? Тогда c'est la vie

annakata 08.01.2009 15:20

Нет, проблема в том, что все после знака равенства необязательно.

Alan Moore 08.01.2009 15:44

Но да, вам также следовало использовать [^ "] *.

Alan Moore 08.01.2009 15:46

гм, no / id = "? ([^"] *) "? / работает точно так, как ожидалось - знак? эквивалентен {0,1} при использовании в качестве квантификатора

annakata 08.01.2009 18:21

Это работает, потому что точка была заменена отрицательным классом символов, И потому что неохотный квантификатор был заменен на жадный. Оба изменения необходимы.

Alan Moore 08.01.2009 21:06

так что согласно моему комментарию за час до твоего? Я сказал, что это не было проверено

annakata 08.01.2009 22:34
Ответ принят как подходящий
id = "?([\w-]*)"?

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

James 08.01.2009 18:29
вздох можем ли мы просто предположить, что OP будет управлять этим сам, учитывая, что вопрос был о группировке, а не о действительных строках идентификатора?
annakata 08.01.2009 22:35

Я бы использовал

id\s*=\s*("[^"]*"|'[^']*'|[^\s>]*)

Это будет соответствовать

id = "foo"
id='bar'
id=baz

Но чтобы получить только значение атрибута, вы должны удалить " или ' в начале / конце, если они заключены в кавычки.

Другие вопросы по теме