javascript - 仅当字符串不以某些字符开头时才获取字符串吗?

标签 javascript regex

我的字符串是:

'{ color : rgb(0,0,0);background-color : rgb(255, 255, 255);}'

我想匹配颜色和背景。

我的正则表达式是

a = new RegExp(prop + '[^;]+?\\;','g');

哪里

prop = `color` or `background-color`

背景匹配良好,但颜色两者都匹配。我试过了

a =new RegExp('[^d-]'+prop + '[^;]+?\\;','g');

它匹配 ;background-color : rgb(255, 255, 255); 但我只想要 background-color : rgb(255, 255, 255); .

1) 我怎样才能得到它?
2)如果我想从字符串中删除background-color,那么正则表达式是什么?

最佳答案

您可以首先使用以下正则表达式匹配所有属性:

/([\w-]+)\s*:\s*(.+?)[;}]/g

使用此输入:

var css = '{\
    color: rgb(0,0,0);\
    background-color: rgb(255, 255, 255);\
    font-size: 2em;\
    margin: 0;\
    padding: 4px;\
    font-style: italic;\
    text-align: center;\
  }'

它给出了这个输出:

var output = {}

s.replace(/([\w-]+)\s*:\s*(.+?)[;}]/g, function(_, k, v) {
  output[k] = isNaN(v) ? v : +v // cast number if necessary
})

console.log(output)
/*^ { color: 'rgb(0,0,0)',
      'background-color': 'rgb(255, 255, 255)',
      'font-size': '2em',
      margin: 0,
      padding: '4px',
      'font-style': 'italic',
      'text-align': 'center' }
*/

然后您就可以动态访问您想要的 key :

var prop = 'color'
output[prop] //=> rgb(0,0,0)

关于javascript - 仅当字符串不以某些字符开头时才获取字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25673926/

相关文章:

javascript - 匹配大括号之间的特定部分

javascript - 从通过 jQuery AJAX 调用的 Controller 返回 PDF

javascript - 如何在 HTML 中为移动页面创建图像下载链接?

php - 制作等同于 PHP 正则表达式的 JavaScript 正则表达式

python - 正则表达式从文件名列表中查找图像序列

javascript - 匹配第一次出现的下划线后跟数字并替换 html 中的匹配集

javascript - 我将如何逆时针编辑极地时钟?

javascript - 在回调中无法看到父函数中的变量

javascript - 如何连接正确的链接目录文件

javascript - 正则表达式匹配(Javascript)