RegEx для передачи URL-адресов и неудачной CIDR-маски - PullRequest
2 голосов
/ 21 мая 2019

У меня есть строки, которые могут быть URL-адресами или CIDR-блоками. Я хочу определить, является ли строка путем URL, например ::1001*

/9this can be/a/path123
/test
/r

или CIDR-маска (/0 до /32):

/24
/12
/32

Я хочу, чтобы регулярное выражение исключало CIDR-маски из совпадений.

Это то, что я имею до сих пор:

^[/?]((?!([0-9]|[1-2][0-9]|3[0-2]))(?=[\S]))[\S ]*$

Что работает, за исключением случая, когда URL-путь начинается с цифры:

/23example

Я пишу код на Go, если это имеет значение.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

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

(.+?[a-z]{2,}[0-9]?.+)

enter image description here

DEMO

RegEx

Если это выражение было нежелательным или мои предположения были неверными, его можно изменить или изменить в regex101.com .

Схема RegEx

jex.im также помогает визуализировать выражения.

enter image description here

0 голосов
/ 21 мая 2019

Может быть, этого будет достаточно:

^[\/?].*[a-zA-Z].*$

См. https://regex101.com/r/dw6Dtw/1

Все, что он делает, это гарантирует, что где-то в пути есть буква

...