在十六进制颜色上分割字符串

时间:2016-12-21 09:13:24

标签: javascript regex string split

与我之前的question相似 我有一个十六进制颜色的字符串,没有空格和命名颜色。

#f503e1Pink59bf22greeny-green#"f7b925"orange#fffwhite

如何在每个十六进制颜色上拆分字符串 - 拆分字符串并保留分隔符?

#f503e1Pink
59bf22greeny-green
#"f7b925"orange
#fffwhite

十六进制颜色可能前面有一个#,可能被引号括起来, <或em>三个或六个字符长。命名颜色可以是未确定长度的任意字符组合。

(#?\"?[a-fA-F0-9]{3,6}\"?)

3 个答案:

答案 0 :(得分:1)

正如其他同事所提到的:对于您当前的输入,没有100%可行的解决方案可以涵盖所有可能的情况。
为了覆盖您的特定输入和输出,请考虑以下方法{{ 1}}功能:

String.match()

答案 1 :(得分:0)

这就是我所拥有的(而且它并不漂亮)

 [HttpPost, ActionName("UpdateCostObjects")]
    public HttpResponseMessage UpdateCostObjects([FromBody] object data)
    {
        var costObjects = JsonConvert.DeserializeObject<List<CostObjectM>>(data.Data);

        if (ModelState.IsValid)
        {
            var updatedCostObjects = Acornpadomainservice.UpdateCostObjects(costObjects).ToList();
            return Request.CreateResponse(updatedCostObjects);
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
        }
    }

答案 2 :(得分:0)

如果我心情不好,你需要做以下事情: 我认为一种颜色(不是六色)只包含字母。绿绿不是单一的颜色,是绿色和绿色。如果这条规则是eronate,请更换 [a-z] +从末尾开始[a-z - ] +或包含所需的任何其他角色。

&#13;
&#13;
var string = '#f503e1Pink59bf22greeny-green#"f7b925"orange#fffwhite',
matches= string .match(/(#?\"?[a-f0-9]{6}\"?|#?\"?[a-f0-9]{3}\"?|[a-z]+)/gi);

console.log(matches);
&#13;
&#13;
&#13;