我有一种情况,我必须通过检查字符串是否以任何此字符开头来分割字符串"< = | > = | = | !="
=>value
期望的结果[=>,value]
>=value
期望的结果[>=,value]
somevalue
期望的结果[somevalue]
我的尝试
var string1 = '<=value';
var splitString = string1.split(/\s+(?:<=|>=|=|!=)\s+/);
console.log(splitString);
答案 0 :(得分:2)
获得您需要的输出
注意:最后的.map
是在somevalue
input.match(/(<=|>=|=|!=)?\s*(.+)/).slice(1)).map(x => x.slice(x[0] === undefined ? 1 : 0)
下面的代码段会测试您的所有三个输入(以及您在示例中从未提及的其他两个) - 这就是它包含在inputs.map(input => ....)
中的原因
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;
注意:您的问题要求<=
,>=
,!=
或=
您尝试的正则表达式为<=
,>=
,!=
或=
然后您的示例只有=>
,>=
?
你的正则表达式甚至找不到=>
!
所以,我修改了这个例子&#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) )