Если вы просто хотите изменить базовый URI, вы можете попробовать элемент BASE
:
<base href="/basepath/">
Но учтите, что изменение базового URI влияет на все относительные URI, а не только на относительные пути URI.
В противном случае, если вы действительно хотите использовать регулярное выражение, учтите, что требуемый относительный путь должен иметь тип path-noscheme (см. RFC 3986 ):
path-noscheme = segment-nz-nc *( "/" segment )
segment = *pchar
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
; non-zero-length segment without any colon ":"
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Таким образом, начало URI должно совпадать:
^([a-zA-Z0-9-._~!$&'()*+,;=@]|%[0-9a-fA-F]{2})+($|/)
Но, пожалуйста, используйте правильный анализатор HTML для анализа HTML и построения DOM из этого. Затем вы можете запросить DOM, чтобы получить атрибуты href
и проверить значение с помощью приведенного выше регулярного выражения.