正则表达式
本文用于记录开发过程中使用到的一些正则表达式
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-9
或10-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-9
或1-n
的字符;
(\.\d{1,2})?$
:匹配结束为.0
到.99
的字符,最多匹配1次;