match regex se traço está dentro de string para n vezes

votos
1

Estou tentando encontrar uma string se ele contém um traço para mais de 3 vezes:

string-has-4-dashes-example

A regex não corresponder a este exemplo:

string-has-3-dashes

Esta, infelizmente, não funciona

.*-{3,}.*

Meu objetivo é construir uma regex como este:

\/germany\/.*-(\d{3,}\.html|\/product\/view\/id.*)$

Que irá corresponder URLs de um tipo semelhante como este

https://www.test.de/germany/bla-blub-test-example-new-2-189.html

Mas não:

https://www.test.de/germany/test-this-1931.html
Publicado 27/11/2018 em 18:11
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Você pode usar esse regex para coincidir com uma cadeia com 3 + hífens:

^(?:[^-]*-){4}

RegEx Demonstração

RegEx Detalhes:

  • ^: Iniciar
  • (?:: Comece grupo de não-captura
    • [^-]*-: Combinar 0+ caracteres não hífen seguido por um hífen
  • ): Grupo de não-captura End.
  • {4}: Combinar 4 instâncias do grupo acima.
Respondeu 27/11/2018 em 18:17
fonte usuário

votos
0

Você pode usar o seguinte regex:

^(?=(?:.*-){4,})

Começa a partir de start of string, em seguida, usa uma look ahead, procurando: qualquer número de qualquer caractere. Isto é repetido 4 or more times.

Respondeu 27/11/2018 em 18:22
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more