validate regulares probar only online one expresiones regex capitalize

regex - regulares - ¿Expresión regular para verificar si las letras mayúsculas se encuentran consecutivamente en una cadena?



regex uppercase letter (5)

Aparte de la excelente publicación de tchrists relativa a Unicode, creo que no necesita la solución compleja con un lookahead negativo ... Su definición requiere una letra mayúscula seguida de al menos un grupo de (una letra minúscula opcionalmente seguida de una letra mayúscula )

^ [A-Z] // Start with an uppercase Letter ( // A Group of: [a-z] // mandatory lowercase letter [A-Z]? // an optional Uppercase Letter at the end // or in between lowercase letters )+ // This group at least one time $

Solo un poco más compacto y más fácil de leer, creo ...

Quiero saber la expresión regular para el siguiente caso:

La cadena debe contener sólo letras alfabéticas. Debe comenzar con una letra mayúscula seguida de una letra minúscula. Entonces puede ser letras minúsculas o mayúsculas.

^[A-Z][a-z][A-Za-z]*$

Pero la cadena tampoco debe contener letras mayúsculas consecutivas. ¿Cómo agrego esa lógica a la expresión regular?

Es decir, HttpHandler es correcto, pero HTTPHandler es incorrecto.


Cada vez que uno escribe [AZ] o [az] , uno se compromete a procesar nada más que datos ASCII de 7 bits. Si eso está realmente bien, entonces está bien. Pero si no lo es, las propiedades Unicode existen para ayudar con esto.

Hay tres casos en Unicode, no dos. Además, también tienes cartas sin escribir. Las letras en general están especificadas por la propiedad /pL , y cada una de estas también pertenece a exactamente una de las cinco subcategorías:

  1. letras mayúsculas , especificadas con /p{Lu} ; por ejemplo: AÇDZÞΣSSὩΙST
  2. letras titlecase , especificadas con /p{Lt} ; por ejemplo: LjDzSsᾩSt (en realidad, Ss y St son letras mayúsculas y minúsculas, pero son lo que obtienes si pides el título de ß y , respectivamente)
  3. letras minúsculas , especificadas con /p{Ll} ; por ejemplo: aαçdzςσþßᾡſt
  4. letras modificadoras , especificadas con /p{Lm} ; por ejemplo: ʰʲᴴᴭʺˈˠᵠꜞ
  5. otras letras , especificadas con /p{Lo} ; por ejemplo: ƻאᎯᚦ京

Puede tomar el complemento de cualquiera de estos, pero tenga cuidado, porque algo como /P{Lu} no significa una letra que no esté en mayúsculas. Significa cualquier carácter que no sea una letra mayúscula.

Para la letra que está en mayúsculas o en títulos, utilice [/p{Lu}/p{Lt}] . Por lo que podría utilizar para su patrón:

^([/p{Lu}/p{Lt}]/p{Ll}+)+$

Si no quiere limitar las letras que siguen a la primera a las letras de la caja solo, entonces es posible que prefiera:

^([/p{Lu}/p{Lt}][/p{Ll}/p{Lm}/p{Lo}]+)+$

Si está tratando de hacer coincidir los denominados identificadores "CamelCase", entonces las reglas reales dependen del lenguaje de programación, pero generalmente incluyen el carácter de subrayado y los números decimales ( /p{Nd} ), y pueden incluir un signo de dólar literal . Si esto es así, es posible que desee agregar algunos de estos a la una o la otra de las dos clases de caracteres anteriores. Por ejemplo, es posible que desee agregar guiones bajos a ambos, pero solo dígitos al segundo, dejándolo con:

^([_/p{Lu}/p{Lt}][_/p{Nd}/p{Ll}/p{Lm}/p{Lo}]+)+$

Sin embargo, si está tratando con ciertas palabras de varios RFC y estándares ISO, a menudo se especifican que contienen ASCII solamente. Si es así, puedes arreglártelas con la idea literal de [AZ] . Simplemente no es amable imponer esa restricción si en realidad no existe.


Edición: 2015-10-26: gracias por los votos positivos, pero eche un vistazo a la respuesta de tchrist. (uno abajo) especialmente si desarrolla para la web o algo más "internacional".

La respuesta de Oren Trutners no es correcta (vea la entrada de muestra de "RightHerE", que debe coincidir pero no es así)

Aquí está la solución correcta:

(?!^.*[A-Z]{2,}.*$)^[A-Za-z]*$

editar:

(?!^.*[A-Z]{2,}.*$) // don''t match the whole expression if there are two or more consecutive uppercase letters ^[A-Za-z]*$ // match uppercase and lowercase letters

/editar

la clave para la solución es un lookahead negativo ver: http://www.regular-expressions.info/lookaround.html


Si desea obtener todo el nombre del empleado en mysql que tenga al menos una letra mayúscula que aplique esta consulta.

SELECT * FROM registration WHERE `name` REGEXP BINARY ''[A-Z]'';


^([A-Z][a-z]+)+$

Esto busca secuencias de una letra mayúscula seguida de una o más letras minúsculas. Las letras mayúsculas consecutivas no coincidirán, ya que solo se permite una a la vez, y debe ir seguida de una letra minúscula.