Estoy tratando de validar aws arn para una instancia de conexión, pero estoy atascado en la creación de la expresión regular correcta.
A continuación se muestra la cadena que quiero validar.
arn:aws:connect:us-west-2:123456789011:instance/0533yu22-d4cb-410a-81da-6c9hjhjucec4b9Quiero crear una expresión regular que verifique debajo de las cosas.
arn:aws:connect:<region_name>:<12 digit account id>:instance/<an alphanumeric instance id>Puede ayudarme alguien, por favor.
Intenté a continuación
^arn:aws:connect:\S+:\d+:instance\/\S+\/queue\/\S+$No hay subcadena /queue/ en su cadena de ejemplo, y \S+ coincide con cualquier carácter sin espacio en blanco y hará que el retroceso coincida con el resto del patrón.
Puede actualizar su patrón a ^arn:aws:connect:\S+:\d+:instance\/\S+$ pero eso será menos preciso de acuerdo con las cosas que desea verificar.
Un patrón un poco más preciso podría ser:
^arn:aws:connect:\w+(?:-\w+)+:\d{12}:instance\/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)+$^ Comienzo de cadenaarn:aws:connect: coincide literalmente\w+(?:-\w+)+: Haga coincidir 1+ caracteres de palabra y repita la coincidencia - y 1+ caracteres de palabra y luego haga coincidir :\d{12}: coincide con 12 dígitos y :instance\/ Coincidencia de instance/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)+ Hacer coincidir 1+ alfanuméricos y repetir 1+ veces - y 1+ alfanuméricos$ Fin de la cadenaNecesita algunos grupos de captura para facilitar esto. Aquí también he usado grupos de captura con nombre para facilitar la comprensión.
const string = "arn:aws:connect:us-west-2:123456789011:instance/0533yu22-d4cb-410a-81da-6c9hjhjucec4b9"; // Regex broken down into parts const parts = [ 'arn:aws:connect:', '(?<region_name>[^:]+?)', // group 1 ':', '(?<account_id>\\d{12})', // group 2 ':instance\\/', '(?<instance_id>[A-z0-9\\-]+?)', // group 3 '$' ]; // Joined parts into regex expression const regex = new RegExp(parts.join('')); // Execute query and assign group values to variables const { region_name, account_id, instance_id } = regex.exec(string).groups; console.log("region_name:", region_name); console.log("account_id:", account_id); console.log("instance_id:", instance_id);