从字符串中删除间距和小数

时间:2014-10-09 16:05:52

标签: javascript regex trim

首先,它必须与所有现代浏览器兼容(因为它在移动设备上使用)。我想做什么?

我有一个元标记,我必须检查,因为人们将它写入不同的DOM。

所以我的例子如下。如果它们存在,我需要删除间距和小数。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

所以我得到了那个元的内容:

var getViewport = document.querySelector('meta[name=viewport]');
var check = getViewport.getAttribute('content');
    console.log(check); // output: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no

我甚至无法修剪它。我尝试了一些修剪功能,例如:

el.replace(/^\s\s*/, '').replace(/\s\s*$/, '');

但在这种特殊情况下它没有做任何事情。

我需要比较该内容是否匹配,否则我将用适当的内容替换它。 人们在很多方面写它,所以我不想比较每种可能的方式,而是让它看起来都一样,所以如果存在那么它将与我上面的例子相同。

width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no
width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no
width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no
width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no

并且他们还可以添加一些间距并在某些地方删除其他目的或意外...如果你理解我想说的话。由于快速输入和语法问题,这可能需要一些编辑。

最重要的是,任何人都可以教我如何修剪,删除"var check"中的小数,所以如果它存在的话会匹配这种类型的字符串:width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no

3 个答案:

答案 0 :(得分:3)

如果您想要允许&#34;任何订单,那么您可以采取另一种更全面的方法。的论点。

删除&#34; .0&#34;,在逗号上拆分,修剪空格,对列表进行排序,然后重新加入。

例如:

check = check.replace(/\.0*\b/g, "").split(/\s*,\s*/g).sort().join(",");

这将允许以下内容匹配:

width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no
user-scalable=no,maximum-scale=1.0,initial-scale=1.0,width=device-width

看到它在行动? JS Bin

答案 1 :(得分:2)

你需要一个正则表达式来删除所有空格,以及所有“.0”。这样就可以了:

check = check.replace(/(\s+|\.0*\b)/g, "")

答案 2 :(得分:1)

首先将它标准化:

var your_string = 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no';
var your_comparison_string = your_string.replace(/\s/g,'');

之后你可以搜索任何浮动数字。在这种情况下,搜索那些WITH点就足够了,因为你会指定那些没有:

的人
var search = your_comparison_string.match(/\d\.\d/g);
for (var i in search) {
  your_comparison_string = your_comparison_string.replace(search[i], parseInt(search[i]));
}