2013-10-24 3 views
1

Меня попросили создать «червяк» для моего домашнего задания. У меня все работает, используя SID, но когда я пытаюсь скопировать SID с помощью Regex, я получаю NULL-результат и не могу понять, почему. Этот код копирует себя в новый поток, но по какой-то причине не может найти SID.Получение NULL результата при попытке скопировать SID с помощью Regex

На первом снимке экрана мы можем видеть код, который у меня есть, который создает новое сообщение и дополнительный код, который копирует весь код. Выбранная (оранжевая часть - это то, с чем у меня проблема) - это то, что я не понимаю, почему это не сработает. Поскольку я использую HTML-кодировку, я не могу использовать плюсовые знаки, поэтому я пытаюсь использовать функцию concat. Кроме того, выражение Regex, которое я использую, работало корректно, насколько я провел некоторое тестирование.

enter image description here

В этом скриншоте мы видим, что результат, когда я выполняю Regex возвращает NULL.

enter image description here

Любые идеи?

Небольшое примечание, это мое домашнее задание, и мы используем специально измененные форумы phpBB, которые позволяют вводить код (JavaScript).

Не уверен, что это правильный раздел SO для публикации, пожалуйста, скажите, если я должен двигаться.

ответ

1

match возвращает массив совпадений. xx[0] будет иметь полный матч, но если вы хотите только SID, то вы должны сделать

/sid=([^;]+)/ 

и .concat(xx[1]).

+0

Хорошо, при попытке вашего решения я замечаю, что это должно быть '.concat (xx [0])'. Отлично! Единственная проблема, с которой я столкнулся сейчас, это то, что код не копирует знак «плюс» внутри выражения Regex. Большое спасибо! – HelpNeeder

+0

Нет проблем. Хм, это действительно досадно. Я бы использовал, прежде всего, альтернативный метод построения регулярных выражений: 'var re = new RegExp (regexStr);', потому что таким образом вы можете предоставить регулярное выражение в виде строки. Почему это полезно? Потому что вы можете это сделать: 'var regexStr = 'sid = [^;]'. Concat (String.fromCharCode (43));'. (43 - это код ASCII для знака «плюс».) После того, как у вас есть объект RegExp, 're', вы вызываете его следующим образом:' var xx = re.exec (document.cookie); '. Я не тестировал ничего из этого, но это просто для того, чтобы дать вам идею :-) –

+1

Только в том случае, если я мог бы перестраховать 2x :) очень полезно, спасибо. – HelpNeeder

Смежные вопросы