Разрешить нулевое значение при проверке цвета регулярного выражения [duplicate]

Если вы хотите сбросить свою локальную ветвь до последней фиксации в ветке вверх, то для меня работает до сих пор:

Проверьте свои пульты, убедитесь, что ваш восходящий поток и источник - это то, что вы ожидаете, если не так, как ожидалось, используйте git remote add upstream <insert URL>, например из оригинального репо GitHub, из которого вы были откопаны, и / или git remote add origin <insert URL of the forked GitHub repo>.

git remote --verbose

git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;

Или:

git fetch upstream master;
git reset --hard upstream/master;
git clean -d --force;

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

git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop

Тогда, если вам нужно объединить эти изменения с другой веткой, где есть конфликты, сохраняя изменения в разработке, использовании:

git merge -s recursive -X theirs develop

Во время использования

git merge -s recursive -X ours develop

сохранить конфликтующие изменения ветви_имя. В противном случае используйте mergetool с git mergetool.

Со всеми изменениями вместе:

git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;

Обратите внимание, что вместо upstream / develop вы можете использовать хеш-фиксацию, другое имя ветки, и т. д. Используйте инструмент CLI, такой как Oh My Zsh, чтобы проверить, что ваша ветка зеленая, указывает, что ничего не зафиксировано, и рабочий каталог является чистым (что подтверждено или также проверено git status). Обратите внимание, что это может фактически добавить фиксации по сравнению с восходящим потоком, если есть что-либо, автоматически добавленное фиксацией, например. UML-диаграммы, заголовки лицензий и т. Д., Поэтому в этом случае вы могли бы потянуть изменения на origin develop на upstream develop, если это необходимо.

47
задан Teun Zengerink 27 July 2012 в 10:55
поделиться

4 ответа

Чтобы сопоставить pattern или пустую строку, используйте

^$|pattern

Объяснение

  • ^ и $ - начало и конец строки якоря соответственно.
  • | используется для обозначения альтернатив, например this|that.

Ссылки


В \b

\b в большинстве случаев это якорь «граница слова». Это совпадение с нулевой шириной, то есть пустая строка, но она соответствует только этим строкам в очень специфических местах , а именно на границах слова.

То есть \b:

  • Между последовательными \w и \W (любой порядок): то есть между символом слова и символом не-слова
  • Между ^ ] и \w, т.е. в начале строки, если она начинается с \w
  • Между \w и $, т.е. в конце строки, если она заканчивается на \w

Ссылки


Вкл. используя регулярное выражение для соответствия адресам электронной почты

Это не тривиально в зависимости от спецификации.

Связанные вопросы

126
ответ дан Community 18 August 2018 в 08:56
поделиться

Альтернативой было бы разместить ваше регулярное выражение в невостребованных круглых скобках. Затем сделайте это выражение необязательным, используя квалификатор ?, который будет искать 0 (т. Е. Пустую строку) или 1 экземпляр незахваченной группы.

Например:

/(?: some regexp )?/

В вашем случае регулярное выражение будет выглядеть примерно так:

/^(?:[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+)?$/

Нет | "или" необходим оператор!

Здесь Документация Mozilla для синтаксиса регулярного выражения JavaScript.

7
ответ дан Jgonzalez731 18 August 2018 в 08:56
поделиться

Я не уверен, почему вы хотите проверить дополнительный адрес электронной почты, но я бы посоветовал вам использовать

^$|^[^@\s]+@[^@\s]+$

, что означает

^$        empty string
|         or
^         beginning of string
[^@\s]+   any character but @ or whitespace
@         
[^@\s]+
$         end of string

Вы выиграли 't прекратить поддельные электронные письма в любом случае, и таким образом вы не прекратите действительные адреса.

2
ответ дан MrWhite 18 August 2018 в 08:56
поделиться
  • 1
    Если адрес не вводится в поле, в базу данных вводится значение NULL, поэтому это можно решить, когда дело доходит до рассылки информационных бюллетеней и т. Д. Я ценю, что это не остановит поддельные адреса, и я не думаю, что возможно вообще с Regex, но это, по крайней мере, минимизирует человеческую ошибку – Curt 26 July 2010 в 10:46
  • 2
    У меня также есть и запросы клиентов. На самом деле, это просто заставить клиентов делать что-то глупое, как вводить свой номер телефона в поле электронной почты. – Kelly Gendron 8 March 2012 в 19:22

\ b соответствует границе слова. Я думаю, вы можете использовать ^ $ для пустой строки.

0
ответ дан pritaeas 18 August 2018 в 08:56
поделиться
Другие вопросы по тегам:

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