2014-12-26 19 views
7

Come posso ottenere una stringa tra due stringhe usando la corrispondenza con le variabili? Il seguente codice funziona bene se uso corrispondenza con le stringhe Regular Expression to get a string between two strings in Javascript Ho anche cercato di applicare le informazioni in JavaScript - Use variable in string match:ottiene una stringa tra due stringhe con javascript

var test = "My cow always gives milk"; 

var testRE = test.match("cow(.*)milk"); 
alert(testRE[1]); 

Ma cosa succede se ho:

var firstvariable = "cow"; 
var secondvariable = "milk"; 

var test = "My cow always gives milk"; 

Ho provato varie cose, tra cui:

var testRE = test.match("firstvariable(.*)secondvariable"); 
alert(testRE[1]); 

e:

var testRE = testRE.match + '("' + firstvariable + "(.*)" + secondvariable +'")'; 
alert(testRE[1]); 

Nessuno dei due ha funzionato.

+1

Come deve gestire un caso come "La mia mucca dà il latte mi piace il latte.". La partita non deve essere avida: "la mucca dà il latte" o l'avido: "la mucca dà il latte, mi piace il latte"? – RobG

+0

Se stai per votare, potresti almeno dare una ragione per cui. – user3080392

risposta

13

Prova questa:

test.match(new RegExp(firstvariable + "(.*)" + secondvariable)); 
+0

Questo ha funzionato. Grazie. – user3080392

+0

Restituisce due parametri e il pugno è la stringa completa –

8

Usa questo codice

var regExString = new RegExp("(?:"+firstvariable+")(.*?)(?:"+secondvariable+")", "ig"); //set ig flag for global search and case insensitive 

var testRE = regExString.exec("My cow always gives milk."); 
if (testRE && testRE.length > 1) //RegEx has found something and has more than one entry. 
{ 
    alert(testRE[1]); //is the matched group if found 
} 

Ciò corrisponde solo la parte centrale della frase.

  1. (?:"+firstvariable+") trova ma non cattura cow.
  2. (.*?) acquisisce tutti i caratteri tra cow e milk e lo salva in un gruppo. ? rende pigro quindi si ferma al latte.
  3. (?:"+secondvariable+") trova ma non cattura milk.

È possibile verificare questo qui sotto:

function testString() 
 
{ 
 
    var test = document.getElementById("testStringDiv").textContent; 
 
    var firstvariable = document.querySelectorAll("input")[0].value; //first input; 
 
    var secondvariable = document.querySelectorAll("input")[1].value; //second input; 
 
    var regExString = new RegExp("(?:"+firstvariable+")(.*?)(?:"+secondvariable+")", "ig"); 
 
    var testRE = regExString.exec(test); 
 

 
    if (testRE && testRE.length > 1) 
 
    { 
 
     document.getElementById("showcase").textContent = testRE[1]; //return second result. 
 
    } 
 
} 
 
document.getElementById("test").addEventListener("click", testString, true);
<div id="testStringDiv">My cow always gives milk.</div> 
 
<div id="showcase">Result will display here...</div> 
 
<input placeholder="enter first var"/><input placeholder="enter second var"/><button id="test">Search in between...</button>

Problemi correlati