/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i
Это соответствует:
- (+351) 282 43 50 50
- 90191919908
- 555-8909
- 001 6867684
- 001 6867684x1
- 1 (234) 567-8901
- 1-234-567-8901 x1234
- 1-234-567-8901 ext1234
- 1-234 567.89/01 ext.1234
- 1(234)5678901x1234
- (123)8575973
- (0055)(123)8575973
В $ n он сохраняет:
Вы можете проверить его на https://www.regexpal.com/?fam=99127
Что ж, я наконец-то нашел решение
, выполнив следующее:
HttpWebResponse HttpWebResponse = (HttpWebResponse)HttpWebRequest.GetResponse();
и прочитав HttpWebResponse.Headers
, где оно выглядит как:
Set-Cookie: expiration=for+5+seconds; expires=Mon, 25-Mar-2019 13:47:30 GMT; path=/
я заметил что файлы cookie, хранящиеся в HttpWebResponse.Cookies
, имеют Cookie.Expires
на основе Machine DateTime Mon, 25-Mar-2019 14:47:30 GMT
(как вы могли бы получить с DateTime.Now
), а не на UTC DateTime (например: DateTime.UtcNow
)
как я строил свое строковое значение cookie для InternetSetCookieEx
на основе HttpWebResponse.Cookies
. Затем я получил + 1 час (потому что я во Франции) с истекающим DateTime, который, по сути, должен быть UTC DateTime.
Решением было преобразовать его в UTC следующим образом:
Values += "; expires=" + Cookie.Expires.ToUniversalTime().ToString("R");
Моя последняя мысль: в Windows 10 должно быть какое-то исправление, которого нет в Windows 7 для InternetSetCookieEx
, Он автоматически корректирует время истечения до UTC, если строка, содержащая GTM DateTime, неверна. (это, вероятно, не точно, но у вас есть идея)