如果我有这样的代码:
var foo = 5;
if ( bar > 2) { bar += foo;}
应该变成这样:
var foo=5;
if(bar>2){bar+=foo;}
删除中间没有字母的空格,避免出现关键字/变量错误。 如果你有两个单词,它之间的空格就是一个空格。
\s+(?=[^A-z])
是我能找到的最接近的,但并不匹配所有空格。
答案 0 :(得分:1)
查看Rails squish
方法:
答案 1 :(得分:1)
这似乎有效:
let re = /(?!\b\s*\w)\s*/gm;
修改:在您的代码中,只需将let
和const
替换为var
for ES5。
let str = `var foo = 5;
if ( bar > 2) { bar += foo;}`;
const re = /(?!\b\s*\w)\s*/gm;
str = str.replace(re, '');
document.body.textContent = str;

答案 2 :(得分:0)
replace(/?=[\w][^\n\t]+/," ")
将用单个空格替换所有多个空格,以便owuld在那里找到你的一半。除此之外,如果你真的想要特别的东西,你可以删除所有的空白区域,并在所有需要空格的关键词之后添加空格......我不建议这样做,因为它会破坏包含关键字的变量名称的代码。
答案 3 :(得分:0)
也许是这样的:
REST=cat # Whatever the rest of your pipeline is...
( cat <<EOF
var foo = 5;
if ( bar > 2) { bar += foo;}
EOF
)\
| tr -s '\t ' " " \
| sed \
-e 's/\([[:punct:]]\) /\1/g' \
-e 's/ \([[:punct:]]\)/\1/g' \
| $REST
输出是:
$ sh test.sh
var foo=5;
if(bar>2){bar+=foo;}