2014-01-07 1 views
0

Я совершенно обычный новичок. Может кто-нибудь помочь мне создать регулярное выражение в JavaScript, чтобы извлечь Test Timp изКак разработать регулярное выражение в javascript?

<a href="/taskuri/edit/?tid=8510#?txName=&ddProject=-1&ddUser=39&ddStatus=0&ddAssigner=-1&deadline=&page=1&sortname=created&sortorder=desc">Test Timp</a><span></span`> 
+1

как о простом a.innerText? –

+0

может назначить идентификатор тегу A? – Developer

+0

@JoranDenHouting, ваша версия плохая, и вам должно быть плохо. В вопросах SO нет места для «благодарности». – Griwes

ответ

1

Как уже упоминалось, hsz, regex - не лучший способ достичь вашей цели. Но так как вы попросили научиться строить регулярное выражение, здесь мы идем:

Во-первых, вам нужно увидеть, что делает текст после «специального» (т. Е. Как его можно найти с помощью дамп-компьютера). В вашем случае это текст между <a ...> и </a>.

Таким образом, наше регулярное выражение будет «захватить все символы между <a ...> и </a>», так что давайте начнем с

var regex = /<a ...>THE STUFF I WANT\</a/; 

Регулярных выражений получают положенные между двумя / так что мы уже получили, что там. Затем нам нужно заменить вышеописанные выражения, которые действительно являются действительными выражениями регулярных выражений. Во-первых, нам нужен способ сослаться на то, что мы хотим. Мы делаем это, заключив его в скобки, потому что это дает нам «группу» мы можем позже обратиться к:

var regex = /<a ...>(THE STUFF I WANT)\</a/; 

Далее, нам необходимо заменить «вещи я хочу» palceholder с регулярное выражение означает «любой куча символов ":

var regex = /<a ...>(.+)\</a/; 

The . означает„любой символ“и + означает„по крайней мере один“(вы можете также использовать * означает„ноль или более“).

Следующая давайте изменим запутанную / вытекания его \:

var regex = /<a ...>(.+)\<\/a/; 

Наконец мы заменим ... с тем же «кучу символов» выражение:

var regex = /<a.+>(.+)\<\/a/; 

Теперь, когда наше регулярное выражение готово, позволяет:

var str = '<a href="/taskuri/edit/?tid=8510#?txName=&ddProject=-1&ddUser=39&ddStatus=0&ddAssigner=-1&deadline=&page=1&sortname=created&sortorder=desc">Test Timp</a><span></span>'; 

var regex = /<a.+>(.+)\<\/a/; 
var result = str.match(regex)[1]; 

Как вы можете видеть, мы просто применяем регулярное выражение, а затем возьмем первую определенную группу с индексом «1». (Данные с индексом 0 представляют собой всю строку, совпадающую с регулярным выражением.)

И все готово!

Что нужно помнить в своем регулярном выражении, является то, что каждый символ в тестируемой строке должно быть учтено в регулярном выражении, или он не будет соответствовать ...

+0

большое спасибо, я очень ценю это !!! – Chester

3

Regex не то, что вы должны использовать для работы с HTML-кодом. Попробуйте с:

var input = '<a href="/taskuri/edit/?tid=8510#?txName=&ddProject=-1&ddUser=39&ddStatus=0&ddAssigner=-1&deadline=&page=1&sortname=created&sortorder=desc">Test Timp</a><span></span>', 
    tmp = document.createElement("DIV"), 
    output = ''; 

tmp.innerHTML = input; 
output = tmp.textContent || tmp.innerText; 
+0

html-код Я получаю его как строку, поэтому его не html-код, это строка – Chester

+0

В моем примере это также строка, хранящаяся в переменной 'input'. Я использую эту строку для создания абстрактного элемента 'DIV'. – hsz

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