Javascript 如何生成一个正则表达式,使其匹配给定字符后一行中的所有内容?
如果我在JavaScript中有一个字符串Javascript 如何生成一个正则表达式,使其匹配给定字符后一行中的所有内容?,javascript,regex,Javascript,Regex,如果我在JavaScript中有一个字符串 key=value 如何生成与键匹配的正则表达式 换言之: var regex = //Regular Expression goes here regex.exec("key=value")[0]//Should be "key" 如何生成与值匹配的正则表达式 我使用这段代码来进行匹配,因此我不能控制JavaScript代码进行正则表达式匹配,也不能使用split .*=(.*) 这将匹配以后的任何东西= (.*)=.* 这将匹配以前的任何东
key=value
如何生成与键匹配的正则表达式
换言之:
var regex = //Regular Expression goes here
regex.exec("key=value")[0]//Should be "key"
如何生成与值匹配的正则表达式
我使用这段代码来进行匹配,因此我不能控制JavaScript代码进行正则表达式匹配,也不能使用split
.*=(.*)
这将匹配以后的任何东西=
(.*)=.*
这将匹配以前的任何东西=
如果您需要多个=字符,请查看贪婪量词与不贪婪量词
编辑:OP澄清了他们使用的是javascript:
var str = "key=value";
var n=str.match(/(.*)=/i)[1]; // before =
var n=str.match(/=(.*)/i)[1]; // after =
使用此正则表达式(^.+?)=(.+?$)
组1包含密钥
第2组包含值
但是拆分是更好的解决方案您可以这样做:
/^[^=]*/ // anything not containing = at the start of a line
/[^=]*$/ // anything not containing = at the end of a line
最好查看Prism的lookbehind
属性,并使用如下内容:
{
'pattern': /(=).*$/,
'lookbehind': true
}
根据这将导致=
字符不是此模式匹配的标记的一部分。是否希望它返回替换键的值?您正在使用grep/任何其他程序,还是希望在编程语言中使用它?哪一个?我会把它拆分成:'key=value'.split('=')代码>。不是一个选项。我正在为prismjs编写一个扩展,以突出显示Java属性文件中的语法。它需要正则表达式。它应该为foo=bar=baz
做什么?理想情况下foo
将由第一个正则表达式匹配,而bar=baz
由第二个正则表达式匹配。我建议[^=]*=(.*)
-更有效(虽然使用非常短的键和非编译语言,也许*
…会更有效?hmmmthe[1]
部分对我来说不是真正可用的。是否有一个只匹配值而不匹配=value
的正则表达式对混淆表示抱歉。我只是编辑了这个问题来澄清我需要什么。@CodeJockey在OP更改问题之前,我从一个JSFIDLE开始。你可以在那里测试什么更有效:
var regex = /^[^=]*/;
regex.exec("key=value");