首先,它必须与所有现代浏览器兼容(因为它在移动设备上使用)。我想做什么?
我有一个元标记,我必须检查,因为人们将它写入不同的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
答案 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]));
}