首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串拆分使用带开头>=|<=|=|<|>|\!=和字符串加增量值的正则表达式

字符串拆分使用带开头>=|<=|=|<|>|\!=和字符串加增量值的正则表达式
EN

Stack Overflow用户
提问于 2018-06-05 08:39:07
回答 2查看 37关注 0票数 1

在这种情况下,我必须将字符串拆分成3个子字符串。

示例

代码语言:javascript
复制
<=Mindate+30 >>> [<=,Mindate,+30]
<=Mindate  >>>  [<=,Mindate]
>=Maxdate-3 >>> [>=,Maxdate,-3]
==Date  >>>  [==,Date]

我已经创建了一个将当前数组分成两部分的函数。

代码语言:javascript
复制
function splitString(str){  
var a= /(>=|<=|=|<|>|\!=)|.+/g
return str.match(a);
}
splitString('<=Mindate+45');

当前输出'<=','Mindate+45‘预期输出'<=','Mindate','+45’

有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 08:46:41

只需将文本部分(\w+)与数字部分([-+]\d+)分开:

代码语言:javascript
复制
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");

票数 2
EN

Stack Overflow用户

发布于 2018-06-05 09:04:50

您可以创建匹配和捕获所有比较运算符的模式,或者在每个+/*-运算符之前匹配一个位置,并在String#split方法中使用该表达式:

代码语言:javascript
复制
a.split(/([<>!=]=|[=<>])|(?=[-+\/*])/).filter(Boolean)

请参阅JS演示:

代码语言:javascript
复制
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);
}

模式细节

  • ([<>!=]=|[=<>]) - Group 1(此值将是结果数组的一部分):<>!=后面跟着==<> char
  • | -或
  • (?=[-+\/*]) -跟着-+/*的位置。

注意:.filter(Boolean)将从结果数组中删除空项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50695761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档