búsqueda positiva hacia delante es lo que estás buscando. La expresión regular es el siguiente:
(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
Aquí, (?=.*[A-Za-z])
es la búsqueda positiva hacia delante que afirma que su cadena como al menos un carácter, y (?=.*[0-9])
afirma que tiene al menos un dígito. Es importante tener en cuenta que la anticipación positiva no devuelve una coincidencia, sino que afirma si existe una coincidencia o no. Por lo tanto, debe leer la expresión regular anterior como "afirmar que tiene al menos un carácter, afirmar que tiene al menos un dígito, ahora que sabemos que las aserciones han pasado, simplemente verifique los caracteres alfanuméricos".
Esto es muy interesante porque le permite combinar fácilmente los requisitos de validación de su aplicación, sin que su regex sea muy compleja. Por ejemplo, si ahora necesita la cadena tener exactamente 20 caracteres, sólo tiene que añadir una nueva afirmación de búsqueda positiva hacia delante, así:
(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
espero que ayude!
¿Vótese el papel? De Verdad? –
@Paco: ¡No sabía que el desbordamiento de pila solo permitía preguntas difíciles! – LukeH
Estoy de acuerdo con Luke. Stack Overflow no tiene que ser para el profesional veterano que tiene un código descompilado bytecode, o 'dónde está la documentación WMI'. –