URL может содержать точку с запятой и все еще быть допустимым?

Я использую регулярное выражение для преобразования URL простого текста в активируемые по щелчку ссылки.

@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.-]*(\?\S+)?)?)?)@

Однако иногда в теле текста, URL перечисляется тот на строку с точкой с запятой в конце. Реальный URL не содержит никого"";.

http://www.aaa.org/pressdetail.asp?PRESS_REL_ID=275;
http://www.aaa.org/pressdetail.asp?PRESS_REL_ID=123;
http://www.aaa.org/pressdetail.asp?PRESS_REL_ID=124

Разрешено иметь точку с запятой (;) в URL, или точку с запятой можно считать маркером конца URL? Как это поместилось бы в мое регулярное выражение?

35
задан Josh Habdas 25 November 2019 в 04:39
поделиться

4 ответа

A semicolon is reserved and should only for its special purpose (which depends on the scheme).

Section 2.2:

Many URL schemes reserve certain characters for a special meaning: their appearance in the scheme-specific part of the URL has a designated semantics. If the character corresponding to an octet is reserved in a scheme, the octet must be encoded. The characters ";", "/", "?", ":", "@", "=" and "&" are the characters which may be reserved for special meaning within a scheme. No other characters may be reserved within a scheme.

40
ответ дан 27 November 2019 в 06:38
поделиться

The W3C encourages CGI programs to accept ; as well as & in query strings (i.e. treat ?name=fred&age=50 and ?name=fred;age=50 the same way). This is supposed to be because & has to be encoded as & in HTML whereas ; doesn't.

27
ответ дан 27 November 2019 в 06:38
поделиться

The semi-colon is a legal URI character; it belongs to the sub-delimiter category: http://www.ietf.org/rfc/rfc3986.txt

However, the specification states that whether the semi-color is legitimate for a specific URI or not depends on the scheme or producer of that URI. So, if site using those links doesn't allow semi-colons, then they're not valid for that particular case.

12
ответ дан 27 November 2019 в 06:38
поделиться

http://www.ietf.org/rfc/rfc3986.txt охватывает URL-адреса и символы, которые могут появляться в незакодированной форме. Поскольку URL-адреса, содержащие точки с запятой, правильно работают в браузерах, ваш код должен их поддерживать.

5
ответ дан 27 November 2019 в 06:38
поделиться
Другие вопросы по тегам:

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