2

如果这是一个令人困惑的问题,我很抱歉。我试图找到一种方法来做到这一点,但找不到它,如果这是一个重复的问题,我很抱歉!

我有这样的文字:something:"askjnqwe234"

我希望能够askjnqwe234使用 RegExp。你可以注意到我想省略引号。我正在尝试使用/[^"]+(?=(" ")|"$)/g,但它返回一个数组。我希望 RegExt 返回单个字符串,而不是数组。

我不知道是否可能,但我不想指定数组的位置;像这样的东西:

var x = string.match(/[^"]+(?=(" ")|"$)/g)[0];

谢谢!

4

3 回答 3

6

尝试:

/"([^"]*)"/g

用英语:寻找"匹配并记录任何"直到你看到另一个"“。

于 2013-03-07T17:07:34.023 回答
2

matchexec始终返回一个数组 or null,因此,假设您有一个双引号值并且字符串中没有换行符,您可以使用

var x;
var str = 'something:"askjnqwe234"';

x = str.replace( /^[^"]*"|".*/g, '' );
// "askjnqwe234"

或者,如果您在字符串中可能有其他引用的值

x = str.replace( /.*?something:"([^"]*)".*/, '$1' );

其中是指 .之间的$1子模式捕获的子字符串。 [^"]*()

应要求提供进一步解释。

尽管如此,我还是建议您容忍数组索引并只使用match.

于 2013-03-07T17:22:17.127 回答
1

您可以像这样捕获引号内的信息,假设它匹配:

var x = string.match(/something:"([^"]*)"/)[1];

索引 1 处的内存捕获是双引号内的部分。

如果您不确定它是否匹配:

var match = string.match(/something:"([^"]*)"/);

if (match) {
    // use match[1] here
}
于 2013-03-07T17:08:38.003 回答