2016-10-03 2 views
0

мне нужно сделать регулярное выражение, чтобы покрыть следующие:REGEX: URL с любыми парами запроса или URL с любыми парами запросов и especific хэшем

домен/пути/ничего -> YES

? ?

домена/путь/ничего #/specificHash -> YES

домена/путь/ничего #/otherHash -> NO

Мои попробовать: Я сделал это регулярное выражение, за исключением otherHashs:

домена/путь/

Он работает, но есть много? (* (OtherHash1 | | otherHash2 otherHash3)?!.) их ... Я хочу, чтобы сделать его проще всего в то числе моего specificHash

заранее спасибо

+0

См. ['Domain/path/\? [^ /] * (?:/SpecificHash)? $'] (Https://regex101.com/r/oSOblT/1). –

+0

@ WiktorStribiżew в соответствии с [RFC3986] (https://tools.ietf.org/html/rfc3986#page-24), «Символ слэш («/») и знак вопроса («? ») Могут представлять данные в пределах компонент запроса ", поэтому проверка на косую черту будет недостаточной, вам нужно будет проверить« # » – Aaron

+0

@Aaron: * Feci quod potui, facient meliora potentes *. Вопрос для меня не достаточно ясен. –

ответ

0

Вы пытаетесь соответствовать URLs, которые имеют строку запроса с последующей конкретным хэшем или строкой запроса без какого-либо хэш; вот как я бы соответствовать:

domain/path/?[^#]*(?:#/specificHash)?$ 

фрагмент [^#]* регулярное выражение должно соответствовать любой строке запроса, но не хэш-фрагмент. За ним может следовать только необязательный #/specificHash и конец строки.

Попробуйте here (разветвлено из тестовых примеров @Wiktor Stribiżew).

Смежные вопросы