常用正则表达式(保持更新)

Published:

正则表达式无论是在任何语言的开发中都是很常见的,有时候也能给我们带来一些意想不到的收益,这篇文章用来积累一些常用的正则表达式,长期保持更新~~~

PS: RegExr 是个很不错的社区。

提取字符串中所有的 uid=123213213 格式中的数字

var str = 'asdasdasdasddassduid=o12345;asdsadasduid=fgdf6789;qwwqe'
var reg = /uid=[^\d]+(\d+)/ig;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[1]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

匹配 css 中的图片

var str = `
    .a {
        background: url(aaa.gif)
    }
    .b {
        background: url('bbb.png')
    }
    .c {
        background: url("ccc.jpg")
    }
`;
var reg = /\burl\s*\((["']?)([^\)]+)\1\)/ig;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[2]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

匹配 html 元素中带有 src 的元素中 src 的属性值

var str = `
    <div>
        <img src='bbb.png' />
        <img src="ccc.jpg" />
        <iframe src="https://www.baidu.com"></iframe>
    </div>
`;
var reg = /\bsrc\s*=\s*(['\"])([^'\"]+)\1[^>]*>/ig;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[2]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

匹配 html 元素中带有 href 的元素中 href 的属性值

var str = `
    <link rel="stylesheet" media="all" href="aaa.css" />
    <link rel="stylesheet" href="bbb.css">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
    <a href="https://www.baidu.com">baidu</a>
    <a href="/rrr">ddd</a>
`;
var reg = /\bhref\s*=\s*(['\"])([^'\"]+)\1[^>]*>/ig;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[2]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

匹配注释

var str = `
    lsdsddss
    // 这是单行注释一
    addsds
    // 这是单行注释二
    sdssdds
    /**
     * 这是多行注释一
     */
    333
    eee
    /**
     * 这是多行注释二
     * 二二二
     */
`;
var reg = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/img;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[1]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

匹配字符串中的数字字串可能是小数或整数

var str = '12aaa34.0bbb56.1ccc78.9.ddd55.000';
var reg = /[-+]?([0-9]*\.?[0-9]+|[0-9]+\.[0-9]*)/ig;
var match = null;
var ret = [];
while (!!(match = reg.exec(str))) {
    ret.push(match[1]);
}
console.log(`结果为 ${JSON.stringify(ret)}`);

去除字符串两端的空格

function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, '');
}
console.log(`---${trim('   abc   ')}---`);