如何创建一个匹配给定字符后一行上所有内容的正则表达式?

时间:2012-08-10 19:15:50

标签: javascript regex

如果我在JavaScript中有一个字符串

key=value

如何制作符合key的{​​{1}}匹配的RegEx?

换句话说:

=

如何制作符合var regex = //Regular Expression goes here regex.exec("key=value")[0]//Should be "key" 的{​​{1}}匹配的RegEx?

我将此代码用于define a language for the Prism syntax highlighter,因此我无法控制执行正则表达式匹配的JavaScript代码,也无法使用value

4 个答案:

答案 0 :(得分:3)

嗯,你可以这样做:

/^[^=]*/     // anything not containing = at the start of a line
/[^=]*$/     // anything not containing = at the end of a line

查看Prism的lookbehind属性可能会更好,并使用类似的东西:

{
    'pattern': /(=).*$/,
    'lookbehind': true
}

根据the documentation,这会导致=字符不属于此模式匹配的标记。

答案 1 :(得分:0)

.*=(.*)

这将匹配=

之后的任何内容
(.*)=.*

这将匹配=

之前的任何内容

如果您期望不止一个=字符,请查看贪婪与不同意量词。

编辑:因为OP澄清他们正在使用javascript:

var str = "key=value"; 
var n=str.match(/(.*)=/i)[1]; // before =
var n=str.match(/=(.*)/i)[1]; // after =

答案 2 :(得分:0)

使用此正则表达式(^.+?)=(.+?$)

第1组包含密钥

第2组包含值

但拆分是更好的解决方案

答案 3 :(得分:0)

var regex = /^[^=]*/;
regex.exec("key=value");