Javascript 使用带开头的正则表达式拆分字符串>=|<=|=|<|>;|\!=和一个字符串加上增量值
有一种情况,我必须将字符串拆分为3个子字符串 范例Javascript 使用带开头的正则表达式拆分字符串>=|<=|=|<|>;|\!=和一个字符串加上增量值,javascript,regex,regex-group,Javascript,Regex,Regex Group,有一种情况,我必须将字符串拆分为3个子字符串 范例 <=Mindate+30 >>> [<=,Mindate,+30] <=Mindate >>> [<=,Mindate] >=Maxdate-3 >>> [>=,Maxdate,-3] ==Date >>> [==,Date] >[>[=Maxdate-3>>[>=,Maxdate,-3] ==日期>>>[==日期] 我创建了
<=Mindate+30 >>> [<=,Mindate,+30]
<=Mindate >>> [<=,Mindate]
>=Maxdate-3 >>> [>=,Maxdate,-3]
==Date >>> [==,Date]
>[>[=Maxdate-3>>[>=,Maxdate,-3]
==日期>>>[==日期]
我创建了一个将当前数组一分为二的函数
function splitString(str){
var a= /(>=|<=|=|<|>|\!=)|.+/g
return str.match(a);
}
splitString('<=Mindate+45');
函数拆分字符串(str){
var a=/(>=|您只需要将文本部分(\w+
)与数字部分([-+]\d+
)分开:
函数拆分为三个(输入){
让regex=/(>=|您可以创建一个模式,该模式匹配并捕获所有比较运算符,或匹配每个+
、/
、*
和-
运算符之前的一个位置,并在字符串中使用表达式#split
方法:
a.split(/([<>!=]=|[=<>])|(?=[-+\/*])/).filter(Boolean)
a.split(/([!=]=|[=])|(?=[-+\/*])/).filter(布尔值)
请参阅JS演示:
var-strs=['=SomeFn-3.45'];
rx=/([!=]=|[=])|(?=[-+\/*])/;
适用于(strs的风险值a){
var res=a.split(rx).filter(布尔值);
console.log(a,“=>”,res);
}
什么不起作用?预期的输出是什么?regex可以写成([>]|\w+|[+-]\d+)
@ThomasAyoub谢谢你的澄清。我假设在这种情况下,如果明确说明不同的情况,regex更可读。从效率方面来说,你的regex可能更好。