pues eso... no consigo esta exprecion reguntar...
segun yo deberia ser
\w*-*_*
y devieria poder leer frases como
hola-mundo
hola_o__o
no-tengo_nada_ke-decir
sin embargo no me funciona D=
el error es cono los - si tienen una letra despues de el guion me causa error..
Citar\w*-*_*
Con eso solo consigues una cadena seguida de guiones y de guiones bajos, ejemplo: holaquetal----___ , hola-_, hola etc
Si quieres añadir caracteres entre los guiones tendrias que poner:
\w*-*\w*_*\w*
Cita de: Darkgold9 en 20 Agosto 2011, 10:15 AM
Con eso solo consigues una cadena seguida de guiones y de guiones bajos, ejemplo: holaquetal----___ , hola-_, hola etc
Si quieres añadir caracteres entre los guiones tendrias que poner:
\w*-*\w*_*\w*
ya lo abia pobado de ese modo... pero ahora que lo pienso... creo que no le abia puesto el \ a cada w... x] me imagino que asi como le expresaste tendra que servir.. gracias!
Tal y como ha puesto la expresión regular Darkgold9, reconocerías cadenas del tipo:
hola---que___tal?
Sí quieres reconocer cadenas como las que has puesto en el primer post la expresión regular debería ser así:
(\w+(-|_)*)*\w+
Y te explico un poco el por qué.
Según las cadenas de ejemplo que has puesto, todas deben comenzar por un caracter de \w, por tanto, hay que poner a la fuerza esto: \w+ con eso estamos reconociendo cadenas que contengan una o más letras o dígitos (sí mal no recuerdo \w incluía también los dígitos pero no estoy seguro). A continuación puede venir, o un guión bajo, o un guión normal y corriente, por tanto eso debe expresarse mediante el operador unión |. Por tanto la parte de la expresión: (-|_)* representa las cadenas de guiones y guiones bajos.
Por último todo lo anterior se junta y se le pone un *, para especificar que todo eso debe aparecer cero o más veces. Para terminar se le añade un \w+ para que reconozca las cadenas que terminen con alguna sucesión de \w.
Espero que lo hayas entendido.
Para los próximos posts intenta escribirlos de una forma más limpia y con menos faltas a la hora de escribir.
Saludos y suerte.
Yo lo haría así mas fácil (para no caer en la recursividad de grupos)
^\w+[\-\_\w]*$
No acepta signos, por lo que no toma "hola---que___tal?" por el "?" al final, si queres agregarlo solo agrega el "?" entre los corchetes :P
Cita de: raul338 en 22 Agosto 2011, 16:57 PM
Yo lo haría así mas fácil (para no caer en la recursividad de grupos)
^\w+[\-\_\w]*$
No acepta signos, por lo que no toma "hola---que___tal?" por el "?" al final, si queres agregarlo solo agrega el "?" entre los corchetes :P
Cierto, mucha mejor expresión que la que se me ocurrió xD. Por otro lado el ejemplo de "hola---que___tal?" se me fue la cabeza al añadir la interrogación jaja.
Saludos.
al final lo resolvi asi xD
[A-Za-z1-9_-]*
=P pero muchas gracias por sus soluciones!
ahora que lo pienso, se podria esto, no?
[\w_-]*
porcierto el ^ al principio y el $ al final es para indicar que es una exprecion regular? seme hace raro por que donde las estoy utilizando (en django) tube que quitarle esos signos para que funcionara
no, el "^" indica principo de linea, el "$" indica fin de linea :) es porque si pones "????##@a_" te lo toma como valido usando tu expresion regular :)
La diferencia entre tu expresion regular y la que puse yo, es que en la mia si o si tiene que empezar por una letra o numero, en cambio la tuya no. La tuya toma "__hola" como valido :)