Regex no permite más de 1 punto consecutivo

  1. ¿Cómo puedo rechazar -- (más de 1 consecutivo)? por ejemplo, ab--c
  2. - al final de las palabras no abc- , por ejemplo, abc-
  3. - al comienzo de las palabras no -abc , por ejemplo, -abc

^[A-Za-z0-9-]+$ es lo que tengo hasta ahora.

 ^(?!-)(?!.*--)[A-Za-z0-9-]+(?< !-)$ 

Explicación:

 ^ # Anchor at start of string (?!-) # Assert that the first character isn't a - (?!.*--) # Assert that there are no -- present anywhere [A-Za-z0-9-]+ # Match one or more allowed characters (?< !-) # Assert that the last one isn't a - $ # Anchor at end of string 

^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$

Usando esta expresión regular, el guión solo se combina justo dentro del grupo. Este guión tiene la [A-Za-z0-9]+ que aparece en cada lado. Debido a que esta sub-expresión coincide con uno o más caracteres alfanuméricos, no es posible que un guión coincida al principio, al final o al lado de otro guión.

 ^[a-zA-Z0-9](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$ ^[a-zA-Z0-9] /*Starts with a letter or a number*/ (?!.*--) /*Doesn't include 2 dashes in a row*/ [a-zA-Z0-9-]* /*After first character, allow letters or numbers or dashes*/ [a-zA-Z0-9]$ /*Ends with a letter or a number*/ 

Partidos:

Re-play / Re-play-ed

No coincide:

Repetir- / Volver a jugar / -Repetir

Si “-” no está permitido al principio ni al final de la cadena, está buscando una secuencia de “uno o más alanum, seguido de uno o más grupos de un guión seguido de 1 o más alanum”.

 /[0-9A-Z]+(-[0-9A-Z]+)+/ 

Simple es un lema valioso con expresiones regulares. (Nota: para buscar caracteres de casos pequeños, agréguelos. No lo hice para mayor claridad)