Node.js&;正则表达式-匹配“;作业“;串
使用Node.js和正确的正则表达式,我需要匹配任何Node.js&;正则表达式-匹配“;作业“;串,node.js,regex,Node.js,Regex,使用Node.js和正确的正则表达式,我需要匹配任何=,前面是任何不带空格的字符串,后面是任何可以包含空格的字符串 我有一个字符串,看起来像这样: key1=value1 key2=value2 key3=multiple values 它应该匹配key1=value1,key2=value2和key3=multiple value 我尝试过以下方法,但不起作用,因为我是一个RegEx新手: string.match(/.*=.+?(?=.*=)/g) 有什么帮助吗 谢谢。以下操作可以完成:
=
,前面是任何不带空格的字符串,后面是任何可以包含空格的字符串
我有一个字符串,看起来像这样:
key1=value1 key2=value2 key3=multiple values
它应该匹配key1=value1
,key2=value2
和key3=multiple value
我尝试过以下方法,但不起作用,因为我是一个RegEx新手:
string.match(/.*=.+?(?=.*=)/g)
有什么帮助吗
谢谢。以下操作可以完成:
(\w+=(.*)(?:\w+=)|$)
const string='key1=value1key2=value2key3=multiple value';
常量正则表达式=/(\w+=(.*)(=(?:\w+=)|$)/g
让我们比赛;
while((match=regex.exec(string))){
常量[,键,值]=匹配;
log(`Key:${Key}-Value:${Value}`)
}
为了防止使用*?
进行不必要的回溯,另一个选项是使用带有负前瞻的,断言下一个单词不包含等号
如果只需要匹配键值对,则可以使用:
[^ =]+=[^= ]+(?:(?! [^\s=]+=) [^= ]+)*
部分地
匹配除空格或[^=]+=
之外的任何字符的1+倍,然后匹配=
=
匹配除空格或[^=]+
=
非捕获组(?:
负前瞻,断言右边的不是(?!
匹配一个空格,1+乘以除空格或[^=]+=
之外的任何字符,然后匹配=
=
关闭前瞻)
如果断言成功,则匹配一个空格和除空格或[^=]+
=
关闭非捕获组并重复0多次以匹配单个单词)*
const regex=/[^\s=]+=[^=\s]+(?:(?![^\s=]+=)[^=\s]+)*/g;
常量str=`key1=value1key2=value2key3=multiplevalues`;
console.log(str.match(regex))代码>