根据JS

时间:2018-07-21 11:56:17

标签: javascript arrays

我有一个如下的ab数组:

const operators = ['<','>','>=','<>','=']

和类似这样的字符串:

const myStr = 'Some Operand > Some Other Operand'

正如您在此字符串中看到的那样,我有一个>字符存在于运算符数组中,现在我想根据数组中存在的运算符来拆分字符串。我知道我可以使用正则表达式来做到这一点,但我不知道该怎么做

1 个答案:

答案 0 :(得分:1)

您可以使用竖线(<|>|>=|<>|=)在正则表达式中定义alternation,这将匹配指定的模式之一(您的运算符)。

您可以将正则表达式传递给split() function

function f(s) { return s.split(/(<>|>=|>|<|=)/); }
console.log(f("Some Operand > Some Other Operand"));
console.log(f("Some Operand >= Some Other Operand"));

编辑:在上面的正则表达式中,我首先编写了2个字符的运算符,然后编写了单字符的运算符。这样,它将正确匹配所有运算符。您甚至可以使用optionals来简化正则表达式:

function f(s) { return s.split(/(<>?|>=?|=)/); }
console.log(f("Some Operand > Some Other Operand"));
console.log(f("Some Operand >= Some Other Operand"));

如果您希望在不使用正则表达式的情况下执行此操作,可以签出使用splitjoin函数的this answer