我正在尝试匹配某些字符串,虽然我必须转义一些特殊字符,但它仍然没有正确匹配。
我有这个
var first=/.+?(?=\[)/i
它仍然匹配整个字符串,它只需要匹配第一个 [
这是字符串业务[帐户]
我需要匹配业务然后匹配帐户。它是用于稍后用于获取对象符号的插件。每个元素都有不同的属性。
我正在尝试匹配某些字符串,虽然我必须转义一些特殊字符,但它仍然没有正确匹配。
我有这个
var first=/.+?(?=\[)/i
它仍然匹配整个字符串,它只需要匹配第一个 [
这是字符串业务[帐户]
我需要匹配业务然后匹配帐户。它是用于稍后用于获取对象符号的插件。每个元素都有不同的属性。
对于这么简单的事情,前瞻并不是真正必要的。尝试使用这样的字符类:
var first = /[^[]+/
这将匹配除 之外的任何字符中的一个或多个 [
。
如果你想把它变成一个可以匹配字符串的两个部分的正则表达式"business[account]"
,试试这个:
/([^[]+)\[([^\]]+)\]/
这将匹配除 之外的任何字符中的一个或多个, [
在组 1 中捕获,然后是 a ,然后是除 之外[
的任何字符中的一个或多个,在组 2 中捕获,然后是。 ]
]
例如
console.log(/([^[]+)\[([^\]]+)\]/.exec("business[account]"));
// ["business[account]", "business", "account"]
您快到了; 只需添加组(带括号)以匹配您想要的:
var m = /(.+?)\[(.+?)\]/.exec("business[account]");
console.log("variable: " + m[1], "index: " + m[2]);