Use un RegularExpressionValidator para limitar el recuento de palabras?
-
20-09-2019 - |
Pregunta
Quiero usar un RegularExpressionValidator ASP.NET para limitar el número de palabras en un cuadro de texto. (El RegularExpressionValidator es mi solución preferida porque va a hacer las dos cheques del cliente y del lado del servidor).
Entonces, ¿cuál sería la expresión regular correcta para poner en el RegularExpressionValidator que contar las palabras y hacer cumplir un límite de palabras? Para, digamos, 150 palabras.
(NB: Veo que esta pregunta es similares, pero las respuestas dadas parecen también se basan en código como de Split (), así que no creo que cualquiera de ellos podría conectarse a una RegularExpressionValidator que es por eso que estoy pidiendo de nuevo)
Solución
Desde ^
y $
es implícitamente conjunto con RegularExpressionValidators , utilice el siguiente:
(\S*\s*){0,10}
El 0 aquí permite cadenas vacías (más específicamente 0 palabras) y 150 es el número máximo de palabras de aceptar. Ajustar como sea necesario para aumentar / disminuir el número de palabras aceptadas.
La expresión regular anterior es no expansivo, de manera que obtendrá un partido rápido versos la dada en la pregunta se hace referencia. (\b.*\b){0,10}
es codicioso, por lo que a medida que aumentó el número de palabras que verá una disminución en el rendimiento.
Otros consejos
Aquí es una referencia rápida para las expresiones regulares: http://msdn.microsoft.com/en-us/library/az24scfc.aspx
Puede utilizar este sitio para probar las expresiones: http://regexpal.com/
Aquí está mi ejemplo de expresiones regulares que funciona tanto con mínimo y máximo de recuento de palabras (y correcciones de errores con el espaciamiento de ataque):
^\s*(\S+\s+|\S+$){10,150}$
Comprobar este sitio:
http://lawrence.ecorp.net/inet/samples /regexp-validate.php#count
regex Javascript, pero es muy similar a asp.net
es algo como esto:
(\ b [a-z0-9] + \ b. *) {4,}