使用正则表达式拆分的字符串以 >=|<=|=|<|>|\!= 和字符串加增量值
String split using regex with beginning >=|<=|=|<|>|\!= And a string plus incremental value
我遇到必须将字符串拆分为 3 个子字符串的情况。
示例
<=Mindate+30 >>> [<=,Mindate,+30]
<=Mindate >>> [<=,Mindate]
>=Maxdate-3 >>> [>=,Maxdate,-3]
==Date >>> [==,Date]
我创建了一个将当前数组一分为二的函数
function splitString(str){
var a= /(>=|<=|=|<|>|\!=)|.+/g
return str.match(a);
}
splitString('<=Mindate+45');
当前输出['<=', 'Mindate+45']
预期输出 ['<=', 'Mindate', '+45']
谁能帮我解决这个问题?
您只需要将文本部分 (\w+
) 与数字部分 ([-+]\d+
) 分开:
function splitToThree(input) {
let regex = /(>=|<=|==|<|>|\!=)|\w+|[-+]\d+/g;
let ans = input.match(regex);
console.log(ans);
}
splitToThree("<=Mindate+30");
splitToThree("<=Mindate");
splitToThree(">=Maxdate-3");
splitToThree("==Date");
您可以创建一个模式来匹配 并捕获 所有比较运算符或匹配每个 +
、/
、[= 之前的位置14=] 和 -
运算符,并在 String#split
方法中使用表达式:
a.split(/([<>!=]=|[=<>])|(?=[-+\/*])/).filter(Boolean)
查看 JS 演示:
var strs = ['<=Mindate+30', '<=Mindate','>=Maxdate-3','==Date','>=SomeFn-3.45'];
rx = /([<>!=]=|[=<>])|(?=[-+\/*])/;
for (var a of strs) {
var res = a.split(rx).filter(Boolean);
console.log(a, "=>", res);
}
图案详情
([<>!=]=|[=<>])
- 第 1 组(此值将成为结果数组的一部分):<
、>
、!
、=
后跟=
或 =
、<
或 >
char
|
- 或
(?=[-+\/*])
- 后跟 -
、+
、/
或 *
. 的位置
注意:.filter(Boolean)
将从结果数组中删除空项。
我遇到必须将字符串拆分为 3 个子字符串的情况。
示例
<=Mindate+30 >>> [<=,Mindate,+30]
<=Mindate >>> [<=,Mindate]
>=Maxdate-3 >>> [>=,Maxdate,-3]
==Date >>> [==,Date]
我创建了一个将当前数组一分为二的函数
function splitString(str){
var a= /(>=|<=|=|<|>|\!=)|.+/g
return str.match(a);
}
splitString('<=Mindate+45');
当前输出['<=', 'Mindate+45'] 预期输出 ['<=', 'Mindate', '+45']
谁能帮我解决这个问题?
您只需要将文本部分 (\w+
) 与数字部分 ([-+]\d+
) 分开:
function splitToThree(input) {
let regex = /(>=|<=|==|<|>|\!=)|\w+|[-+]\d+/g;
let ans = input.match(regex);
console.log(ans);
}
splitToThree("<=Mindate+30");
splitToThree("<=Mindate");
splitToThree(">=Maxdate-3");
splitToThree("==Date");
您可以创建一个模式来匹配 并捕获 所有比较运算符或匹配每个 +
、/
、[= 之前的位置14=] 和 -
运算符,并在 String#split
方法中使用表达式:
a.split(/([<>!=]=|[=<>])|(?=[-+\/*])/).filter(Boolean)
查看 JS 演示:
var strs = ['<=Mindate+30', '<=Mindate','>=Maxdate-3','==Date','>=SomeFn-3.45'];
rx = /([<>!=]=|[=<>])|(?=[-+\/*])/;
for (var a of strs) {
var res = a.split(rx).filter(Boolean);
console.log(a, "=>", res);
}
图案详情
([<>!=]=|[=<>])
- 第 1 组(此值将成为结果数组的一部分):<
、>
、!
、=
后跟=
或=
、<
或>
char|
- 或(?=[-+\/*])
- 后跟-
、+
、/
或*
. 的位置
注意:.filter(Boolean)
将从结果数组中删除空项。