本文用于记录开发过程中使用到的一些正则表达式

1、匹配URL中所有的参数

(\?|&)([^=]+)(=)([^&]+)

(\?|&):匹配"?"或"&";

([^=]+):匹配不为"="的字符,直到遇到"="时停止匹配。在URL中匹配到参数名称;

(=):匹配"=";

([^&]+):匹配不为"&"的字符,直到遇到"&"时停止匹配。在URL中匹配到参数值。

示例:

let reg = new RegExp(/(\?|&)([^=]+)(=)([^&]+)/g);
let str = "/web/FMTN05?inqu_status-0-matId=10001304&inqu_status-0-matName=维生素E干粉50%CWS/S";
// 对参数值进行编码,解决特殊字符的问题
str.replace(reg, function() {
    return arguments[1] + arguments[2] + arguments[3] + encodeURIComponent(arguments[4]);
});
// 结果:'/web/FMTN05?inqu_status-0-matId=10001304&inqu_status-0-matName=%E7%BB%B4%E7%94%9F%E7%B4%A0E%E5%B9%B2%E7%B2%8950%25CWS%2FS'

// 获取参数值
let parameterName = "matId";
function getParameter(name) {
    const reg = new RegExp(`${name}=([^&]+)`, 'g');
    const group = reg.exec(location.search);
    if(!group) {
        return;
    }
    const value = group[1].replaceAll("+", "%20");
    return decodeURIComponent(value);
}

2、匹配[0, 100]的小数或整数

(^(\d|[1-9]\d)(\.\d{1,2})?$)|(^100$)

^(\d|[1-9]\d):匹配开始为0-910-99的字符;

(\.\d{1,2})?$:匹配结束为.0.99的字符,最多匹配1次;

(^100$):匹配100

示例:

let reg = new RegExp(/(^(\d|[1-9]\d)(\.\d{1,2})?$)|(^100$)/g);
reg.test("0");      // true
reg.test("80");     // true
reg.test("90.12");  // true
reg.test("100");    // true

3、匹配整数或小数

(^(\d|[1-9]\d*)(\.\d{1,2})?$)

^(\d|[1-9]\d*):匹配开始为0-91-n的字符;

(\.\d{1,2})?$:匹配结束为.0.99的字符,最多匹配1次;

标签: 正则表达式

添加新评论