繁体   English   中英

Javascript正则表达式匹配由非数字字符分隔的数字

[英]Javascript regexp match numbers separated by non-numeric characters

我想得到4位数字组成的所有数字。 之前和之后应该有2个非数字字符或根本没有字符。

这就是我到目前为止所拥有的。 在此示例中,正确的结果将仅为“0000”,但它也匹配1234,4567,5678。

我错过了什么?

Js小提琴: http//jsfiddle.net/M8FYm/3/

资源:

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <title>Regex test</title>
    <script type="text/javascript">
        $(document).ready(function(){
            pattern = '(\D{2})?('+'([0-9]{4})'+')(\D{2})?';

            var regexp = new RegExp(pattern, "g");
            var string = $('.test').html();

            while (match = regexp.exec(string)) {
                console.log(match);
            }
        })
    </script>
</head>
<body>
    <p class="test">
        1234 4567 67
        0000  345
        456 23  0000
        12345678
    </p>
</body>
</html>
var test = 
"1234 4567 67\n" + 
"0000  345\n" +
"456 23  0000\n" +
"12345678";

test.match(/(^|\D{2})\d{4}(\D{2}|$)/gm)
// => ["0000  ", "  0000"]

正则表达式查找句子的开头或2个非数字,后跟4个数字,然后是句子的结尾或2个非数字。 /m修饰符使^匹配行的开头和$行的结尾,而不仅仅是整个字符串的开头和结尾。

此处示例中的测试字符串与jsfiddle上的测试字符串不同。 通过将正确的间距(2)和多行修改器(m)添加到修订的正则表达式,它应该返回所需的结果:

/\D{2}[0-9]{4}\D{2}/gm

结果:

0000
0000

示例: http//jsfiddle.net/Ebxfj/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM