{"id":844,"date":"2011-04-24T10:02:30","date_gmt":"2011-04-24T14:02:30","guid":{"rendered":"http:\/\/yuguangzhang.com\/blog\/?p=844"},"modified":"2011-04-24T10:02:30","modified_gmt":"2011-04-24T14:02:30","slug":"javascript-url-parsing","status":"publish","type":"post","link":"http:\/\/yuguangzhang.com\/blog\/javascript-url-parsing\/","title":{"rendered":"JavaScript URL Parsing"},"content":{"rendered":"<p>Many web frameworks have URLs in the format of <em>domain\/category\/page<\/em>, but what if there&#8217;s a need for that outside of the framework, like in client-side scripting? Two lines of code is enough for getting those URL parameters:<\/p>\n<p>[cc lang=&#8221;javascript&#8221;]<\/p>\n<p>var url = \/(\\w+):\\\/\\\/([\\w.]+(?:\\:8000)?)\\\/(\\S*)\\\/(\\S*)\\\/\/;<br \/>\nvar result = &#8220;http:\/\/127.0.0.1:8000\/category\/page\/&#8221;.match(url);<\/p>\n<p>[\/cc]<\/p>\n<p>One special feature of JavaScript regular expressions is <em>(?&#8230;)<\/em> is a group that does not show in the result array.<\/p>\n<p>If you wanted to map the result to different actions:<br \/>\n[cc lang=&#8221;javascript&#8221;]<\/p>\n<p>if (result != null) {<br \/>\n\tswitch(result[4]){ \/\/page<br \/>\n\t\tcase &#8216;page1&#8217;:<br \/>\n\t\t\t\/\/code block1<br \/>\n\t\t\tbreak;<br \/>\n\t}<br \/>\n}<\/p>\n<p>[\/cc]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many web frameworks have URLs in the format of domain\/category\/page, but what if there&#8217;s a need for that outside of the framework, like in client-side scripting? Two lines of code is enough for getting those URL parameters: [cc lang=&#8221;javascript&#8221;] var url = \/(\\w+):\\\/\\\/([\\w.]+(?:\\:8000)?)\\\/(\\S*)\\\/(\\S*)\\\/\/; var result = &#8220;http:\/\/127.0.0.1:8000\/category\/page\/&#8221;.match(url); [\/cc] One special feature of JavaScript regular expressions [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[23],"tags":[129,133],"class_list":["post-844","post","type-post","status-publish","format-standard","hentry","category-programming","tag-haiku","tag-javascript"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/posts\/844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/comments?post=844"}],"version-history":[{"count":0,"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/posts\/844\/revisions"}],"wp:attachment":[{"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/media?parent=844"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/categories?post=844"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yuguangzhang.com\/blog\/wp-json\/wp\/v2\/tags?post=844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}