регулярное выражение javascript для сопоставления символов между двумя строками - PullRequest
0 голосов
/ 09 сентября 2009

Я совершенно новичок в регулярных выражениях, и я пытаюсь использовать его для сопоставления значений и сопоставления их с переменными (javascript просматривает выходные данные в responseceText, сгенерированные из сценария 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 = GRER JEEP CHEROKEE>, GRAND JEEP CHEROKEE'

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

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

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

Ответы [ 2 ]

1 голос
/ 09 сентября 2009

Попробуйте:

/Combined_Make =([^<]+)/

И тогда вы захотите получить доступ к первой группе захвата ([1]):

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

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

var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];
0 голосов
/ 09 сентября 2009

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

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

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

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...