将命令行拆分为参数

时间:2015-03-19 17:48:33

标签: javascript regex

我有一个字符串,我使用这个正则表达式分裂成参数:

/('[^']*'|"(\\"|[^"])*"|(?:\/(\\\/|[^\/])+\/[gimy]*)(:? |$)|(\\ |[^ ])+|[\w-]+)/gi;

它适合像这样的字符串:

'test "foo bar" baz /^asd [x]/ str\\ str 10 1e10';

exept正则表达式在末尾有空格因为(:? |$)我通过删除分割后的空格来解决这个问题,但是有没有办法通过正则表达式修改来做到这一点?

2 个答案:

答案 0 :(得分:1)

(:? |$)更改为(?=:? |$)?=是一个积极的预测,因此它会强制执行匹配,但不会返回)

答案 1 :(得分:1)

您可以将其更改为预测((?=…)):

/('[^']*'|"(\\"|[^"])*"|(?:\/(\\\/|[^\/])+\/[gimy]*)(?= |$)|(\\ |[^ ])+|[\w-]+)/gi;

我还考虑将空格更改为\s(和[^ ]\S),以便处理其他空白字符,例如制表符和换行符。