【问题标题】:Sort regex matches by alphabet按字母对正则表达式匹配进行排序
【发布时间】:2016-10-23 09:59:26
【问题描述】:

这是我的 HTML

<div id="all">3xOrange;2xBlue;1xRed;1xRed;1xRed;1xOrange;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;2xOrange;3xRed;1xBlue;1xRed;2xBlue;3xRed;1xBlue;1xRed;20xBlue;33xRed;20xBlue;33xRed;2xBlue;3xRed;51xBlue;51xRed;</div>

我的目标是显示正则表达式匹配并按字母对结果进行排序,但我的正则表达式匹配以数字和 x 开头,排序应忽略 /\d+x 并按下一个字母排序,因此结果将如下所示: (2x蓝色;2x蓝色;3x橙色;1x橙色;1x红色;1x红色;1x红色;3x红色;......)

$( document ).ready(function() {
  var words = document.body.textContent || document.body.innerText,
    matches = words.match(/\d+x[^;]*;/g);

   function strDes(a, b) {
       if (a>b) return -1;
       else if (a<b) return 1;
       else return 0;
     }
     var a2=matches;
     a2.sort(strDes);
$('#myDiv').text(a2).html(a2);

这是我到目前为止得到的,它显示匹配并对它们进行排序,但只是按我想忽略的前面女巫的数字,请帮助

【问题讨论】:

    标签: javascript regex sorting pattern-matching alphabetical


    【解决方案1】:

    这成功了,现在工作正常:)

    $( document ).ready(function() {
      var words = document.body.textContent || document.body.innerText,
        matches = words.match(/\d+x[^;]*;/g);
        function strDes(a, b) {
            a = a.split('x')[1];
            b = b.split('x')[1];
           if (a<b) return -1;
           else if (a>b) return 1;
           else return 0;
         }
         var a2=matches;
         a2.sort(strDes);
    
    
        $('#myDiv').text(a2).html(a2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2011-08-29
      • 2013-12-26
      • 2013-06-03
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多