【问题标题】:Help with regexp replacing every second comma in the string帮助正则表达式替换字符串中的每一秒逗号
【发布时间】:2009-05-20 18:12:09
【问题描述】:

我有一串这样的显示......

1235、3、1343、5、1234、1

我需要用分号替换每隔一个逗号

1235, 3; 1343, 5; 1234, 1

字符串长度总是不同的,但会遵循与上面相同的模式,即数字逗号空格数字逗号空格等

如何使用 javascript 做到这一点?有可能吗?

谢谢, 迈克

【问题讨论】:

  • 非常感谢大家,我从这些例子中学到了不少东西。

标签: javascript regex


【解决方案1】:
'1235, 3, 1343, 5, 1234, 1'.replace(/([0-9]+),\s([0-9]+),\s/g, '$1, $2; ')

【讨论】:

  • 如果您想快速确认正确性,请尝试粘贴到浏览器的 URL:javascript:alert('1235, 3, 1343, 5, 1234, 1'.replace(/([0-9]+ ),\s([0-9]+),\s/g, '$1, $2; '))
【解决方案2】:
var s = '1235, 3, 1343, 5, 1234, 1';
var result = s.replace(/(,[^,]*),/g,"$1;");

【讨论】:

  • 这是一个有效的策略 Dmitri - 不确定你的意思
【解决方案3】:
var s='1235, 3, 1343, 5, 1234, 1';

s=s.replace(/([^,]+,[^,]+),/g,'$1;')

匹配任何不是逗号的内容,后跟逗号, 后跟任何不是逗号和逗号的内容。

将括号内的所有内容(不包括最后一个逗号)替换为自身 ('$1'),并添加一个分号来代替该逗号。

【讨论】:

    【解决方案4】:

    怎么样:

    var regex = /(\d+),\s(\d+),\s/g;
    var str = '1235, 3, 1343, 5, 1234, 1'; 
    alert(str.replace(regex, '$1, $2; ')); // 1235, 3; 1343, 5; 1234, 1
    

    【讨论】:

      【解决方案5】:
      var myregexp = /(\d+,\s\d+),/g;
      result = subject.replace(myregexp, "$1;");
      

      【讨论】:

        【解决方案6】:

        var foo = "1235,3,1343,5,1234,1".replace(/(.\*?),(.\*?),/g, "$1,$2;");
        
        console.log(foo)

        【讨论】:

        • 编辑后删除了反对票,(.*?) 是非贪婪匹配吗?所以这里基本上是[^,]的意思
        猜你喜欢
        • 2011-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 1970-01-01
        • 2011-04-30
        相关资源
        最近更新 更多