本帖最后由 回家路上 于 2015-8-26 12:29 编辑
回复 11# CrLf
昨天学到了正则表达式。然后回头又去理解了你的mshta宿主方式混编的解析参数的正则(O(∩_∩)O~以前根本看不懂)- var argv = getopts(mshta.commandLine)
- for(var i=0;i<argv.length;i++)alert(argv[i])
-
- function getopts(strArg){
- var re = /([^"\s,;=]*"[^"]*(?:"[^"\s,;=]*")*[^"]*(?:"[^"\s,;=]*|$))|[^"\s,;=]+/g
- var argv = []
- strArg.replace(re,function($0,$1){argv.push($1?$1.replace(/^"(.*)"$/,'$1'):$0)})
- return argv
- }
复制代码 然后我也试写了一个正则表达式- (".+?"(?=[\s,;=]|$))|[^\s,;=]+
复制代码 用你的那个方法测了测。好使哈。分享一下。- <!-- :
- @echo off
- mshta "%~0" 11111 111111,1111111; 1111"1"1"11=1111"11"111 "1111111111" "11"1"1"1111"" "1111,1111"
- pause
- -->
-
- <HTA:APPLICATION id=mshta></HTA>
-
- <script>
- var argv = getopts(mshta.commandLine);
- alert(argv.join("\r\n"));
- close();
-
- function getopts(strArg){
- var re = /(".+?"(?=[\s,;=]|$))|[^\s,;=]+/g;
- var argv = [];
- strArg.replace(re,function($0,$1){argv.push($1?$1.replace(/^"(.*)"$/,'$1'):$0)});
- return argv;
- }
- </script>
复制代码
|