¿Cómo comprobar si una cadena contiene solo números en PowerShell?
Uno de los miembros de mi equipo estaba buscando un script de PowerShell para comprobar si una cadena contenía sólo caracteres numéricos. Sugerí algunos métodos. En este tutorial, explicaré cómo comprobar si una cadena contiene solo números en PowerShell usando varios métodos.
Para comprobar si una cadena contiene solo números en PowerShell, puede utilizar el operador -match con una expresión regular. Por ejemplo, para validar un código postal, puedes utilizar el siguiente código:
$zipCode = "12345"
if ($zipCode -match '^\d+$') {
Write-Output "The string contains only numbers."
} else {
Write-Output "The string contains non-numeric characters."
}Aquí, el patrón de expresiones regulares ^\d+$garantiza que la cadena esté formada únicamente por dígitos de principio a fin.
Déjame mostrarte todos los métodos con ejemplos:
Método 1: usar expresiones regulares
En PowerShell, puede utilizar expresiones regulares (regex) para hacer coincidir patrones dentro de cadenas. En PowerShell, puede utilizar el operador -match para determinar si una cadena contiene solo caracteres numéricos.
Entendámoslo con un ejemplo.
Ejemplo
Digamos que tienes una cadena que representa un código postal, que solo debe contener números:
$zipCode = "12345"
if ($zipCode -match '^\d+$') {
Write-Output "The string contains only numbers."
} else {
Write-Output "The string contains non-numeric characters."
}En este ejemplo, el patrón de expresiones regulares ^\d+$ comprueba si la cadena contiene solo dígitos desde el inicio (^) hasta el final ($). Si la cadena coincide con este patrón, significa que solo contiene números.
Ejecuté el script de PowerShell anterior usando código VS y puedes ver el resultado exacto en la captura de pantalla a continuación.
Leer el ejemplo de PowerShell IsNullOrEmpty()
Método 2: uso del operador -replace
Déjame mostrarte otro método para comprobar si la cadena contiene sólo números en PowerShell.
Puede utilizar el operador -replace para eliminar todos los caracteres numéricos de la cadena y luego verificar si la cadena resultante está vacía.
Déjame mostrarte un ejemplo con el script completo.
Ejemplo
Considere una cadena que representa un Número de Seguro Social (SSN):
$ssn = "987654321"
if (($ssn -replace '\d', '') -eq '') {
Write-Output "The string contains only numbers."
} else {
Write-Output "The string contains non-numeric characters."
}
Aquí, la parte -replace '\d', '' elimina todos los dígitos de la cadena. Si la cadena resultante está vacía (-eq ''), significa que la cadena original contenía solo números.
Puede ver la captura de pantalla del resultado real después de ejecutar el script de PowerShell anterior.
Consulte Comprobar si una cadena contiene un espacio en PowerShell
Método 3: uso del cmdlet Select-String
En PowerShell, también puede utilizar el cmdlet Select-String para buscar patrones dentro de cadenas. Este método es particularmente útil cuando se trabaja con archivos o conjuntos de datos más grandes.
Ejemplo
Suponga que tiene una lista de ID de empleados almacenada en un archivo de texto y desea asegurarse de que todos contengan solo números.
Aquí está el script completo de PowerShell.
$employeeIDs = Get-Content -Path "C:\Bijay\employeeIDs.txt"
foreach ($id in $employeeIDs) {
if ($id -match '^\d+$') {
Write-Output "$id is valid (contains only numbers)."
} else {
Write-Output "$id is invalid (contains non-numeric characters)."
}
}Aquí, Get-Content lee el archivo línea por línea y el patrón -match '^\d+$' verifica cada línea para asegurarse de que contenga solo caracteres numéricos.
Leer PowerShell: IsNullOrEmpty vs IsNullOrWhiteSpace
Método 4: usar el método TryParse
Si desea probar un método .Net, puede utilizar un enfoque orientado a .Net.
Puede utilizar el método [int]::TryParse para validar si una cadena se puede analizar como un número entero.
Ejemplo
Aquí hay una cadena que representa un número de teléfono sin ningún formato:
$phoneNumber = "2025550198"
$result = [int]::TryParse($phoneNumber, [ref]$null)
if ($result) {
Write-Output "The string contains only numbers."
} else {
Write-Output "The string contains non-numeric characters."
}En este ejemplo, [int]::TryParse analizará la cadena como un número entero. Si tiene éxito, devuelve $true, lo que indica que la cadena contiene solo caracteres numéricos.
Si ejecuta el script anterior, podrá ver el resultado en la siguiente captura de pantalla:
Conclusión
En este tutorial, le he mostrado cómo comprobar si una cadena contiene solo números en PowerShell usando varios métodos como:
- Usando expresiones regulares
- Usando el operador -replace
- Uso del cmdlet Seleccionar cadena
- Usando el método TryParse
Espero que estos ejemplos te ayuden a aprender esto.


