Javascript正则表达式问题

时间:2011-09-27 09:41:34

标签: javascript regex string match

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的{​​{1}},即“u436754_5”。

如何使用JavaScript is_explicit_plac获取“1557423901”和“u436754_5”?

注意:保证regex.match() or split or else在每种情况下都会name之前。

1 个答案:

答案 0 :(得分:1)

由于JavaScript没有lookbehinds,我编写了与'attribute=\\\"value\\\"'匹配的代码段,然后删除了'attribute=\\\"\\\"部分。

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

享受!