2011-02-04 18 views

Respuesta

11
^(?!-)(?!.*--)[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 
+0

Disculpe, esto tampoco coincide con abd- –

+0

@Sachin: Como no debería. El OP está enumerando tres condiciones que él quiere rechazar. (Si quería permitir guiones al principio/final, ¿por qué los habría mencionado?) –

+0

Firefox 4 comete errores en este caso. '^ [^ -] + (?!. * -).+ [^ -] + $ 'funciona. Probado con http://jsbin.com/ujoxu3. – Martijn

22

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

El uso de esta expresión regular, el guión es sólo comparable justo dentro del grupo. Este guion tiene la sub-expresión [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.

+0

¡Eso es inteligente! Probablemente sea más fácil de entender que todas mis cosas de búsqueda. –

+4

@Sachin: Según entiendo el OP, eso es exactamente lo que él quiere. Sin embargo, podría ser más explícito. –

+0

@Tim - Eeeesshhh ... Totalmente mal entendido la pregunta. @Brian - Absolutamente esto funciona. Es por eso que estaba tratando de unir -bd y abd- en mi expresión regular ... Gracias y lo siento. –

1
^[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 Matc h:

Replay-/Re - Juego/-Replay

0

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

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

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

Cuestiones relacionadas