正则表达式用于将< = lastdate + 30d拆分为5的数组

时间:2018-06-06 04:54:31

标签: javascript regex regex-group

我正在尝试使用正则表达式匹配函数将以下字符串拆分为子字符串。但它并没有分裂最后一个元素。谁能指出我正在做的错误?

"<=lastdate+30d".match(/(>=|<=|==|<|>|\!=)|\w+|[-+]|\d|[dhms]/g)

result is ["<=", "lastdate", "+", "30d"]

expected result is ["<=", "lastdate", "+", "30", "d"]

2 个答案:

答案 0 :(得分:2)

正则表达式的问题在于\w[a-zA-Z0-9_]匹配。因此,最后30d\w+匹配。

使用以下正则表达式:

/(>=|<=|==|<|>|\!=)|[a-z]+|[-+]|\d+|[dhms]/

&#13;
&#13;
console.log("<=lastdate+30d".match(/(>=|<=|==|<|>|\!=)|[a-z]+|[-+]|\d+|[dhms]/gi));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

"<=lastdate+30d".match(/>=|<=|==|<|>|\!=|\d+|\w+|[-+]|[dhms]/g)

它正在考虑30d一个单词字符,如果你首先搜索数字,它就会将它分开。