Regex per non consentire più di 1 trattino consecutivamente

  1. Come posso non consentire -- (più di 1 consecutivo)? ad es. ab--c
  2. - dietro alle parole non consentire, ad es abc-
  3. - All’inizio delle parole non consentire, ad esempio -abc

^[A-Za-z0-9-]+$ è quello che ho finora.

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

Spiegazione:

 ^ # 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 (? 

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

Usando questa espressione regolare, il trattino è abbinato solo all’interno del gruppo. Questo trattino ha la [A-Za-z0-9]+ sotto-espressione che appare su ciascun lato. Poiché questa sottoespressione corrisponde a uno o più caratteri alfanumerici, non è ansible che un trattino corrisponda all’inizio, alla fine o accanto a un altro trattino.

 ^[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*/ 

gli incontri:

Re-play / Re-play-ed

Non corrisponde:

Riproduzione / Riproduzione / Riproduzione

Se “-” non è consentito all’inizio né alla fine della stringa, stai cercando una sequenza di “uno o più alanum, seguita da uno o più gruppi di un trattino seguiti da 1 o più alanum”

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

Semplice è un motto prezioso con espressioni regolari. (nota: per cercare caratteri minuscoli, aggiungerli. Non l’ho fatto per chiarezza)