我需要检查字符串是否具有以下格式:1234g
,1234 g
,1.234kg
或1.234 kg
这意味着有一个数字值,然后是单位“g”或“kg”,它们之间有或没有空格。
不知道如何在regEx中添加单位:
string.match(/^[0-9]+$/)
检查后我需要拆分字符串以获得数值。我该怎么做?
答案 0 :(得分:0)
试试这个:
var match = string.match(/^(\d+(?:\.\d+)?)\s?k?g$/);
var numericValue = match ? match[1] : null;
答案 1 :(得分:0)
如果您想使用替换而不是正则表达式,则此方法有效。
示例中您需要的只是函数removeKg():
<html>
<head>
<style><!-- Your Styles --></style>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script language="javascript">
var a = ['1234g', '1234 g', '1.234kg', '1.234 kg'];
$(document).ready(function() {
for (var i = 0; i < a.length; i++) {
$('#output').append('<p>' + removeKg(a[i]) + '</p>');
}
});
function removeKg(x) {
return x.replace('k','').replace('g','').replace(' ','');
}
</script>
</head>
<body>
<div id="output">
<!-- Results here -->
</div>
</body>
</html>
产生以下内容:
1234
1234
1.234
1.234
答案 2 :(得分:0)
[
"1s",
" 0.3 ms ",
" $ 20",
"10 kg "
]
.forEach(test => {
var unit = test.trim().split(/\d+/g).filter(n=>n).pop().trim(),
value = test.trim().split(unit).filter(n=>n)[0].trim()
console.log({value, unit})
})