2

我正在尝试匹配某些字符串,虽然我必须转义一些特殊字符,但它仍然没有正确匹配。

我有这个

 var first=/.+?(?=\[)/i

它仍然匹配整个字符串,它只需要匹配第一个 [

这是字符串业务[帐户]

我需要匹配业务然后匹配帐户。它是用于稍后用于获取对象符号的插件。每个元素都有不同的属性。

4

2 回答 2

2

对于这么简单的事情,前瞻并不是真正必要的。尝试使用这样的字符类:

var first = /[^[]+/

这将匹配除 之外的任何字符中的一个或多个 [

如果你想把它变成一个可以匹配字符串的两个部分的正则表达式"business[account]",试试这个:

/([^[]+)\[([^\]]+)\]/

这将匹配除 之外的任何字符中的一个或多个 [在组 1 中捕获,然后是 a ,然后是除 之外[的任何字符中的一个或多个,在组 2 中捕获,然后是。 ]]

例如

console.log(/([^[]+)\[([^\]]+)\]/.exec("business[account]"));
// ["business[account]", "business", "account"]
于 2013-10-12T03:42:35.687 回答
2

您快到了; 只需添加组(带括号)以匹配您想要的:

var m = /(.+?)\[(.+?)\]/.exec("business[account]");
console.log("variable: " + m[1], "index: " + m[2]);
于 2013-10-12T03:43:06.843 回答