2012-01-27 25 views
6

Estoy tratando de escribir una expresión regular que validará que la entrada del usuario sea mayor que X cantidad de caracteres que no sean espacios en blanco. Básicamente estoy tratando de filtrar el comienzo y el final del espacio en blanco mientras sigo asegurando que la entrada sea mayor que X caracteres; los personajes pueden ser cualquier cosa, simplemente no espacios en blanco (espacio, tabulación, retorno, nueva línea). Este la expresión regular que he estado usando, pero no funciona:Longitud mínima Expresión regular

\s.{10}.*\s 

estoy usando C# 4.0 (Asp.net Validador de expresiones regulares) por cierto si lo que importa.

+1

¿Tiene que ser una expresión regular? Podrías hacerlo sin una expresión regular con bastante facilidad. –

Respuesta

7

Puede ser más fácil de no usar expresiones regulares en absoluto:

input.Where(c => !char.IsWhiteSpace(c)).Count() > 10 

Si los espacios en blanco no debe contar en el medio, entonces esto va a funcionar:

(\s*(\S)\s*){10,} 

Si no le importa sobre el espacio en blanco entre caracteres que no son del espacio en blanco, las otras respuestas tienen ese escenario cubierto.

+0

Lo siento, recién actualizado. Estoy usando un validador de expresiones regulares. – Mark

+0

@Mark: en caso de que su validación falle si hay espacios en blanco en medio de algunos caracteres válidos, p. 'f a l l' –

+0

No, eso está bien, siempre y cuando haya X caracteres entre el primer espacio no blanco y el último espacio no blanco. – Mark

3

Esta expresión regular se ve durante ocho o más caracteres entre el primer y último caracteres no está en blanco, haciendo caso omiso de espacio inicial y final:

\s*\S.{8,}\S\s* 
1

Si su tratando de comprobar (como en mi caso, un número de teléfono que contiene 8 dígitos), necesita referirse a un número debajo del que necesita.

(\s*(\S)\s*){7,}