匹配一个范围的字符串, 比如 10-12 10.3-20.3 -10.4-20 -10.4--20.4 每个字符串后面可以有0个或多个空格 , 空格后面还有个任意字符
在JavaScript中,要匹配你描述的字符串模式,可以使用以下正则表达式:
javascript
const regex = /^-?\d+(\.\d+)?-(-?\d+(\.\d+)?) *.[\s\S]*$/;
正则表达式解释
^
:匹配字符串的开始位置。-?
:匹配一个可选的负号。\d+
:匹配一个或多个数字。(\.\d+)?
:匹配一个可选的小数部分,即一个点后面跟着一个或多个数字。-
:匹配范围分隔符-
。(-?\d+(\.\d+)?)
:再次匹配一个可选负号开头,包含数字和可选小数部分的数。*
:匹配零个或多个空格。.
:匹配一个任意字符。[\s\S]*
:匹配零个或多个任意字符(包括换行符等所有字符,因为[\s\S]
涵盖了所有的空白字符和非空白字符)。$
:匹配字符串的结束位置。
使用示例
javascript
// 匹配一个数值范围字符串 "10-12" "10.3 -20.3 " "-10.4 - 20" "-10.4--20.4"
const rangeRegex = /^-?\d+(\.\d+)?( *)?-( *)?(-?\d+(\.\d+)?)( *)?.[\s\S]*$/;
// 测试示例
const testStrings = [
"12-20 \t", //true
"10.3-20.3", //true
"-10.4-20dfafs", //true
"-10.4--20.4", //true
"10 - 12 ", //true
"10.3 - 20.3 ", //true
"-10.4 - 20 ", //true
"-10.4 - -20.4 ", //true
"10.0", //false
"-1230.1 " //false
];
testStrings.forEach(str => {
console.log(str + ": " + rangeRegex.test(str));
});
在上述示例中,testStrings
数组包含了一些测试字符串,通过 regex.test(str)
方法来检查每个字符串是否匹配正则表达式,并将匹配结果打印到控制台。