JS Regex获取两个字符之间的值

时间:2014-06-22 05:19:21

标签: javascript regex

我有一串包含大量动态内容的字符串,我需要从字符串中获取十六进制颜色。

<div class=''>2014-02-01</div>
<div class='' style='color: #0b62a4'>
   Company 1:
   $0
</div>
<div class='' style='color: #7A92A3'>
   Company 2:
   $4
</div> 

我想在js中获取数组中的所有十六进制颜色。在js中,我如何使用正则表达式来获取&#34;#&#34;之间的所有十六进制颜色。和&#34;&#39;&#34;?先谢谢!

示例代码:

<script>
    var colors = getStringBetween(content,"#","'");
</script>

5 个答案:

答案 0 :(得分:2)

颜色十六进制代码可以是3位数或6位

您需要的RegEx是

/(#[0-9A-F]{6})|(#[0-9A-F]{3})/gi

以下是Demo

<强>代码

var getAllColors = function(content) {
    return content.match(/(#[0-9A-F]{6})|(#[0-9A-F]{3})/gi)
}

var str = "<div class=''>2014-02-01</div><div class=''style='color: #0b62a4'>Company 1:$0</div><div class=''style='color: #7A92A3'>Company 2:$4</div><div class=''style='color: #7A3'>Company 2:$4</div>"

getAllColors(str)
//output ["#0b62a4", "#7A92A3", "#7A3"]

答案 1 :(得分:0)

您可以使用类似于以下

的正则表达式
var rgbHex = /#([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])/gi

使用str.match函数提取匹配列表

var colors = content.match(rgbHex);

答案 2 :(得分:0)

上面的答案非常好,但它不会越过多线,匹配函数将返回比你想要迭代的更多(括号集将在结果中显示)

尝试.match(/\#[0-9a-fA-F]+?\'/gm):

点击f12并以此为例运行

("<div class=''>2014-02-01</div>"+
"<div class='' style='color: #0b62a4'>"+
   "Company 1:"+
   "$0"+
"</div>"+
"<div class='' style='color: #7A92A3'>"+
   "Company 2:"+
   "$4"+
"</div> ").match(/\#[0-9a-fA-F]+?\'/gm)

答案 3 :(得分:0)

http://jsfiddle.net/ug73K/1/

string=document.body.innerHTML;

matches=string.match(/#[0-9A-Za-z]{6}/g);

console.log(matches);

答案 4 :(得分:0)

这是一个非常简单的函数,它返回一个6位十六进制数字的数组,而不添加#字符。它还会自动扩展任何3位十六进制代码(例如:#abc = aabbcc)。

function getHex(str){
    var rHex = /#[\da-f]+/ig;
    var matches = str.match(rHex) || [];

    var i = matches.length;
    while(i--){
        var match = matches[i].slice(1);

        if(match.length == 3){
            var expand = '';

            expand += match[0] + match[0];
            expand += match[1] + match[1];
            expand += match[2] + match[2];

            match = expand;
        }

        matches[i] = match;
    }
    return matches;
}