Узел js Недопустимое регулярное выражение: недопустимая группа [дубликат]

Вы должны использовать методы - (void)didReceiveMemoryWarning и - (void)dealloc.

В iOS 6 методы viewWillUnload и viewDidUnload для UIViewController теперь устарели. Если вы использовали эти методы для выпуска данных, вместо этого используйте метод didReceiveMemoryWarning. Вы также можете использовать этот метод для публикации ссылок на представление контроллера представления, если он не используется. Вам нужно будет проверить, что представление не находится в окне, прежде чем делать это.

Итак, вы должны проверить, находится ли ваше представление в окне первым, а затем удалить своего наблюдателя в didReceiveMemoryWarning

1
задан Community 23 May 2017 в 11:59
поделиться

3 ответа

JavaScript в браузерах обычно не поддерживает именованный захват.

Именованные биты захвата - это (?<name>.*?) и (?<email>\S+@[^\s>)]+).

Вы можете заменить названный захват на нумерованные группы захвата, изменив это:

[\W"]*(?<name>.*?)[\"]*?\s*[<(]?(?<email>\S+@[^\s>)]+)[>)]?

на это:

[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?

Regular expression visualization [/g0]

Итак, в JavaScript это будет выглядеть так:

match = subject.match(/[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?/i);
if (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group 1 (name): match[1]
    // capturing group 2 (email): match[2]
} else {
    // Match attempt failed
}

Помните, что группы захвата могут быть добавлены только, если они что-то захватывают.

3
ответ дан Dean Taylor 15 August 2018 в 16:14
поделиться
  • 1
    Спасибо Дин, ваше предложение работало как шарм! за исключением одной крошечной проблемы. этот exp, похоже, не проверяет конец электронной почты для .com или .org и т. д. – Derek 25 February 2014 в 17:03
  • 2
    Для фактической проверки адреса электронной почты я хотел бы обратиться к этому вопросу: stackoverflow.com/questions/201323/… – Dean Taylor 25 February 2014 в 19:21
  • 3
    Большое спасибо!! Это действительно помогло :) – Derek 26 February 2014 в 09:02

Добавьте : после (?, чтобы предотвратить ссылку на паратезис:

/[\W"]*(?:"<name>".*?)[\"]*?\s*[<\(]?(?:"<email>"\S+@[^\s>)]+)[>)]?/
0
ответ дан Alex 15 August 2018 в 16:14
поделиться
  • 1
    Это всегда кажется ложным. Я пытаюсь ввести что-то вроде «Test & lt; имя@email.com> & quot; – Derek 25 February 2014 в 17:10
  • 2
    ok, но тогда его проблема с регулярным выражением, а не синтаксис :) – Alex 25 February 2014 в 17:13

Насколько я могу судить, нет никакого искажения (это было бы примерно так: (?<=prefix)). Но, возможно, помеченное совпадение не поддерживается ((?"<name>"...)). Попробуйте без этого и сравните совпадения по их числу:

/[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?/

Имя будет первым, а электронная почта - второй захваченной группой

0
ответ дан fejese 15 August 2018 в 16:14
поделиться
Другие вопросы по тегам:

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