У меня есть следующий 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
Отредактировали вопрос



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


как насчет:
id = "?(.*?)"?
(возможно, это должно быть [^ "] - я не тестировал)
Это будет соответствовать только id = "и пропустить остальные
должно было быть "? ([^"] *)? Тогда c'est la vie
Нет, проблема в том, что все после знака равенства необязательно.
Но да, вам также следовало использовать [^ "] *.
гм, no / id = "? ([^"] *) "? / работает точно так, как ожидалось - знак? эквивалентен {0,1} при использовании в качестве квантификатора
Это работает, потому что точка была заменена отрицательным классом символов, И потому что неохотный квантификатор был заменен на жадный. Оба изменения необходимы.
так что согласно моему комментарию за час до твоего? Я сказал, что это не было проверено
id = "?([\w-]*)"?
Нет, он также должен соответствовать двоеточиям, точкам, и первый символ идентификатора должен быть буквой.
Я бы использовал
id\s*=\s*("[^"]*"|'[^']*'|[^\s>]*)
Это будет соответствовать
id = "foo"
id='bar'
id=baz
Но чтобы получить только значение атрибута, вы должны удалить " или ' в начале / конце, если они заключены в кавычки.
Можете ли вы опубликовать пример, показывающий проблему?