2009-01-15 12 views
28

¿Cómo puedo probar si una expresión regular coincide con una cadena exactamente?emparejar la secuencia exacta con JavaScript

var r = /a/; 
r.test("a"); // returns true 
r.test("ba"); // returns true 
testExact(r, "ba"); // should return false 
testExact(r, "a"); // should return true 
+0

¿Tenía la intención de escribir "var r = /./;"? – Prestaul

+0

tenía la intención de escribir/a/(: gracias –

+0

duplicado posible de [Regex - Unir cadena entera] (http://stackoverflow.com/questions/6298566/regex-match-whole-string) – Vadzim

Respuesta

59

ya sea

var r = /^a$/ 

o

function matchExact(r, str) { 
    var match = str.match(r); 
    return match != null && str == match[0]; 
} 
+4

Esta respuesta es incorrecta.. los triples iguales hace tipo de comparación, así como la comparación del valor. Desde str.match devuelve una matriz de resultados, el tipo de retorno de str.match es array, sin embargo, el tipo de str es String. Por lo tanto, la comparación fallará. es necesario echar un vistazo en el primer elemento de la matriz de resultados Consulte esta jsFiddle:.. http://jsfiddle.net/m2HFP/ –

+0

@SteveMelvin gracias por la captura de respuesta – Jimmy

+0

Ver Svante a continuación, así, ya que dan una explicación de por Por qué esto funciona. – WhyNotHugo

12

Escribe tu expresión regular de manera diferente:

var r = /^a$/; 
r.test('a'); // true 
r.test('ba'); // false 
8

Si no se utiliza ningún marcadores de posición (como el "exactamente" parece implicar), ¿qué hay de la comparación de cuerdas instea ¿re?

Si usa marcadores de posición, ^ y $ coinciden con el principio y el final de una cadena, respectivamente.

0
var data = {"values": [ 
    {"name":0,"value":0.12791263050161572}, 
    {"name":1,"value":0.13158780927382124} 
]}; 

//JSON to string conversion 
var a = JSON.stringify(data); 
// replace all name with "x"- global matching 
var t = a.replace(/name/g,"x"); 
// replace exactly the value rather than all values 
var d = t.replace(/"value"/g, '"y"'); 
// String to JSON conversion 
var data = JSON.parse(d); 
Cuestiones relacionadas