Регулярное выражение Javascript для сопоставления символов между двумя строками

StackOverflow https://stackoverflow.com/questions/1400604

  •  05-07-2019
  •  | 
  •  

Вопрос

Я совершенно новичок в регулярном выражении и пытаюсь использовать его для сопоставления значений, чтобы сопоставить их с переменными (javascript просматривает выходные данные в ответеText, сгенерированном из php-скрипта).

На данный момент у меня есть этот код:

if (xmlhttp.readyState==4)
  {
  document.getElementById("test").innerHTML=xmlhttp.responseText;
  cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</);
  }

Вот (часть) вывода, на который он смотрит:

echo "<span class=\"note\">";
echo "Test Output\n";
echo " Combined_Make = $model\n";
echo " Combined_Model = $marque\n";

когда все работает, на самом деле он смотрит на строку вроде:

Combined_Make = GRAND JEEP CHEROKEE<br />

На данный момент я получаю обратно именно это:

'Combined_Make = GRAND JEEP CHEROKEE>, GRAND JEEP CHEROKEE'

Конечно, в данном случае мне нужен просто «GRAND JEEP CHEROKEE» :) — Я также не уверен, почему я получаю именно такой точный результат!

Обратите внимание, что мне нужно будет назначить несколько переменных var$, каждая из которых будет использовать разные начальные строки для совпадения!

Заранее благодарю за любую помощь!

Это было полезно?

Решение

Пытаться:

/Combined_Make =([^<]+)/

И тогда вам понадобится доступ к первой группе захвата ([1]):

cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];

Однако вы можете проверить совпадение, прежде чем пытаться получить доступ к первой группе захвата:

var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];

Другие советы

String.match () всегда возвращает массив, даже когда есть только одно совпадение (кроме случаев, когда совпадения нет, тогда он возвращает NULL )

В случае шаблонов, включающих захваченные подгруппы, String.match () всегда будет возвращать полное совпадение с шаблоном с индексом 0, а затем последующие группы соответствия с индексами с 1 по N .

Вот четкий способ продемонстрировать, что

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top