Проблема регулярных выражений в Javascript - PullRequest
0 голосов
/ 27 сентября 2011
str = 'autocomplete=\\\"off\\\" name=\\\"composer_session_id\\\" value=\\\"1557423901\\\" \\\/>\\u003cinput type=\\\"hidden\\\" autocomplete=\\\"off\\\" name=\\\"is_explicit_place\\\" id=\\\"u436754_5\\\"';

или используйте эту строку

session_id\":1557423901,\"include_source\":\"web_composer\",\"allow_cities\":true},\"bootstrapEndpoint\":\"\\\/ajax\\\/places\\\/typeahead.php\"});},\"j4e8191ff7ff1878042874292\":function(){return new Typeahead(JSCC.get('j4e8191ff7ff1878042874291'), {node_id: \"u436754_1\",

Я хочу, чтобы str.match() возвращало значение composer_session_id, которое равно "1557423901", а также id из is_explicit_plac, которое равно "u436754_5".

Как получить "1557423901" и "u436754_5" с помощью JavaScript regex.match() or split or else?

Примечание: гарантируется, что name будет предшествовать value в каждом случае.

1 Ответ

1 голос
/ 01 августа 2012

Поскольку JavaScript не имеет вид сзади, я написал этот фрагмент, который соответствует 'attribute=\\\"value\\\"', а затем удаляет части 'attribute=\\\" и \\\".

var matches = str.match(/(?:name|id|value)=\\".*?\\"/g);
for (var key in matches)
    matches[key]=matches[key].replace(/.*?\\"(.*?)\\"/,"$1");

Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...