检查字符串格式'value unit'并拆分字符串以获取值

时间:2014-10-24 14:56:08

标签: javascript jquery regex

我需要检查字符串是否具有以下格式:1234g1234 g1.234kg1.234 kg 这意味着有一个数字值,然后是单位“g”或“kg”,它们之间有或没有空格。

不知道如何在regEx中添加单位:

string.match(/^[0-9]+$/)

检查后我需要拆分字符串以获得数值。我该怎么做?

3 个答案:

答案 0 :(得分:0)

试试这个:

var match = string.match(/^(\d+(?:\.\d+)?)\s?k?g$/);
var numericValue = match ? match[1] : null;

以下是demo for the regex

答案 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})
})