2011-07-13 26 views

Respuesta

13

haría ser:

var rx = /(^@|,$)/; 
 
console.log(rx.test("")); // false 
 
console.log(rx.test("aaa")); // false 
 
console.log(rx.test("@aa")); // true 
 
console.log(rx.test("aa,")); // true 
 
console.log(rx.test("@a,")); // true

Pero ¿por qué no simplemente usar las funciones de cadena para obtener los primeros y/o últimos caracteres:

var strings = [ 
 
    "", 
 
    "aaa", 
 
    "@aa", 
 
    "aa,", 
 
    "@a," 
 
]; 
 
for (var i = 0; i < strings.length; i++) { 
 
    var string = strings[i], 
 
    result = string.length > 0 && (string.charAt(0) == "@" || string.slice(-1) == ","); 
 
    console.log(string, result); 
 
}

+0

gracias. Limpio y descriptivo. –

10

Para una cadena que, o bien se inicia con @ o termina con una coma, la expresión regular se vería así:

/^@|,$/ 

O bien, simplemente podría hacer esto:

solución RegEx
if ((str.charAt(0) == "@") || (str.charAt(str.length - 1) == ",")) { 
    // string matched 
} 
+0

gracias. No sé por qué estaba escribiendo un + en lugar de | –

+2

'/^@ |, $ /' funciona igual de bien. –

+1

+1 para la solución obvia no-regex – kapa

1
'@test'.match(/^@.*[^,]$|^[^@].*,$/) // @test 
'@test,'.match(/^@.*[^,]$|^[^@].*,$/) // null 
'test,'.match(/^@.*[^,]$|^[^@].*,$/) // test, 
'test'.match(/^@.*[^,]$|^[^@].*,$/) // null 
+0

+1 por ser el único que aborda la condición "cualquiera-o" en la pregunta. –

Cuestiones relacionadas