如何使用带有开头字符的正则表达式来拆分字符串匹配任何这个< = | > = | = | !=

时间:2018-05-17 00:35:37

标签: javascript regex

我有一种情况,我必须通过检查字符串是否以任何此字符开头来分割字符串"< = | > = | = | !="

  • =>value期望的结果[=>,value]
  • >=value期望的结果[>=,value]
  • somevalue期望的结果[somevalue]

我的尝试

var string1 = '<=value';
var splitString = string1.split(/\s+(?:<=|>=|=|!=)\s+/);
console.log(splitString);

3 个答案:

答案 0 :(得分:2)

获得您需要的输出

注意:最后的.map是在somevalue

的情况下删除空白条目
input.match(/(<=|>=|=|!=)?\s*(.+)/).slice(1)).map(x => x.slice(x[0] === undefined ? 1 : 0)

下面的代码段会测试您的所有三个输入(以及您在示例中从未提及的其他两个) - 这就是它包含在inputs.map(input => ....)中的原因

&#13;
&#13;
const inputs = ['<=value', '>=value', '!= value', '=value', 'somevalue'];
const outputs = inputs.map(input => input.match(/(>=|<=|=|\!=)?\s*(.+)/).slice(1)).map(x => x.slice(x[0] === undefined ? 1 : 0));
console.log(outputs);
&#13;
&#13;
&#13;

注意:您的问题要求<=>=!==
您尝试的正则表达式为<=>=!== 然后您的示例只有=>>=

你的正则表达式甚至找不到=>

所以,我修改了这个例子&#34;输入&#34;要理智...即使用问题和尝试的正则表达式要求 - 我认为你的输入例子是匆匆放在一起:p

答案 1 :(得分:0)

可能有多个正确的答案,但我认为最短的是

[<>!](?:=)|=

您可以在此处测试或尝试修改:https://regex101.com/r/kXIOvx/1。对于正则表达式新手甚至是退伍军人来说,这是一个很好的网站,因为他们不想运行整个程序来验证正则表达式行(每次编写正则表达式行时都必须这样做)

答案 2 :(得分:0)

()个结果中包含split个群组,filter可用于删除空条目:

var re = /([<>!]?=)/g

console.log( '<=value'.split(re).filter(Boolean) )
console.log( '=value'.split(re).filter(Boolean) )
console.log( 'value'.split(re) )

match而不是拆分:

var re = /[<>!]?=|.+/g

console.log( '<=value'.match(re) )
console.log( '=value'.match(re) )
console.log( 'value'.match(re) )