así que estoy buscando una expresión regular que no permita dos "." pero puede tener muchos. Además, la cadena no debe comenzar ni terminar con ".".
He escrito una expresión regular pero permite múltiples puntos consecutivamente.
new RegExp("^[0-9a-z].*[0-9a-z]$", "i"),ejemplos validos
"abc.def.hun.asasdsd" "asasaasass.l" "p.asasasas"ejemplos inválidos
".asassa" "sasas..sasas.sas" "asas.sasas.sasas." "sasas...sasasdsd.sasass"Puede usar esta expresión regular:
/^[az\d](?!.*\.\.)(?:.*[az\d])?$/gmiExplicación:
^[az\d] : coincide con el carácter alfanumérico al inicio(?!.*\.\.) : Anticipación negativa para fallar la coincidencia si hay 2 puntos consecutivos en cualquier lugar(?:.*[az\d])? : coincide con cualquier cosa seguida de un carácter alfanumérico. Haz de este un partido de grupo opcional$ : FinPuede usar este comando, para comenzar con ^[0-9a-z] con el número de letras, y luego grupos de puntos con letras y números, pero no dos puntos secuenciales.
const result = new RegExp("^[0-9a-z]+?(\.[0-9a-z]+)*$", "i").test('one.dsfsdf.'); console.log(result)