Проблема с регулярным выражением в usercript для chrome - PullRequest
2 голосов
/ 19 февраля 2011

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

Это используется в скрипте пользователя для chrome.

Я пытаюсь выбрать дату из строки.Строка является innerHTML из тега, который мне удалось выбрать.Структура html, а также строка, выглядит примерно так: (div - это выбранный тег, поэтому все внутри - это содержимое строки)

<div id="the_selected_tag">  
    <a href="http://www.something.com"  title="something xxx">link</a>  
    " 2011-02-18 23:02"  
    <a href="http://www.somthingelse.com" title="another link">thing</a>
</div>

Если у вас есть решение, которое помогает мне выбратьдата без этого пуха, это также было бы здорово.

Javascript:

var pattern = /\"\s[\d\s:-]*\"/i;
var tag = document.querySelector('div.the_selected_tag');
var date_str = tag.innerHTML.match(pattern)[0]

Когда я использую этот скрипт в качестве обычного JavaScript для HTML-документа, чтобы проверить его, он работает отлично, нокогда я устанавливаю его как пользовательский скрипт в chrome, он не находит шаблон.

Я не могу понять, как обойти эту проблему.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Дамп innerHTML в консоль. Если все выглядит хорошо, тогда начните собирать регулярные выражения из более общих (/\d+/) в более конкретные и выводить все в консоль. Существует множество разных символов кавычек в разных кодировках, много разных типов тире.

[\d\s:-]* не очень хороший выбор, потому что он будет соответствовать " 1", " ". Я бы предпочел написать что-то как можно более конкретное:

/" \d{4}-\d{2}-\d{2} \d{2}:\d{2}"/

(Также document.querySelector('div.the_selected_tag') вернул бы ноль в вашем образце, но вы, вероятно, хотели написать class вместо id)

1 голос
/ 19 февраля 2011

Скорее всего, tag.innerHTML не содержит того, что, как вы думаете, оно содержит.

...