2012-04-04 42 views
5

que estoy tratando de conseguir por lo menos tres palabras separadas por dos commas.I han logrado hasta el momento para que coincida con dos palabras con una coma conRegex para que coincida con tres palabras separadas por comas dos

/([A-z]|[0-9])(,{1})([A-z]|[0-9])/ 

pero ¿cómo puedo agregue una coma y una palabra a esto. He intentado repetir lo mismo, pero no funcionó.

+4

Qué idioma en esta expresión regular en? –

+3

Probablemente desee '[a-zA-Z]' y no '[A-z]' – Yuval

+0

Parece ser javascript para mí, pero podría estar equivocado. – Neil

Respuesta

5

/^(?:\w+,){2,}(?:\w+)$/

Esto le dará una lista separada por comas de al menos 3 palabras ([a-zA-Z0-9 _] +).

/^\s*(?:\w+\s*,\s*){2,}(?:\w+\s*)$/

Esta es una versión un poco más fácil de usar de la primera, lo que permite espacios entre palabras.

+0

gracias por la ayuda. Pero la expresión regular no permite los espacios entre las palabras que te gusten mencionado –

+0

[Lo probé yo mismo.] (http://www.regular-expressions.info/javascriptexample.html) ¿Qué ejemplo probaste? – Neil

+0

gracias por esto. Estoy contento con lo que me diste, pero parece que la primera y la tercera palabras ocupan espacios entre sí, pero la segunda no. Por poner un ejemplo, (muy bueno, no está mal, muy feo) no pasaría la validación pero (muy bueno, malo, muy feo) pasa la validación –

1

Si es PERL derived regex, como la mayoría de las implementaciones que he encontrado, /[^,]+(?:,[^,]+){2,}/ prueba bien contra cualquier cosa que tenga al menos dos comas, siempre que las comas tengan algo entre ellas. La construcción (?:) permite agrupar sin capturar. El constructo {2,} especifica 2 o más coincidencias del grupo anterior. En JavaScript, se puede probar que:

/[^,]+(?:,[^,]+){2,}/.test("hello,world,whats,up,next"); // returns true 

/[^,]+(?:,[^,]+){2,}/.test("hello,world"); // returns false 
+0

Probablemente podría ir sin el '?:' En el constructo '(? :)' si no se deriva PERL; pero luego obtienes capturas, que no sé si quieres. – Yuval

0

algunas sugerencias generales desde la perspectiva del rendimiento:

  1. No utilice [] | cláusula [] - que sólo puede poner algunas clases de personajes dentro de [] , p.ej [A-Za-z0-9]
  2. No usar en exceso(): por lo general, cada uno de ellos almacena el argumento capturado, lo que requiere una sobrecarga adicional. Si sólo necesita agrupar algunas piezas de buscar conjuntamente la agrupación operador que no coincide con la tienda (que podría ser algo así como (?: ...))
+0

Por favor [edite su publicación] (http://meta.stackoverflow.com/editing-help) es casi ilegible. – stema

0

prueba este:

([a-zA-Z0-9]+)(,[a-zA-Z0-9]+){2,} 
-1

Este va a resolver su problema, probar esto

([a-zA-Z0-9], [a-zA-Z0-9], ([a-zA-Z0-9]))

+0

Esto solo manejará caracteres individuales, p. a, b, c o 1,2,3. –

Cuestiones relacionadas