javascript正则表达式 - 只生成(.)+组中的最后一个字母?

log*_*ic8 1 javascript regex

我试图通过正则表达式拆分字符串并获得意外结果:

var str = 'name == abcd';
var pattern = /([^!=>< ]+)\s*([!=><]+)\s*(.)+/i;

pattern.exec(str);
Run Code Online (Sandbox Code Playgroud)

示例的结果是: [ "name == abcd", "name", "==", **"d"** ]

为什么"d""abcd"呢?

Rob*_*rtB 5

捕获组(.)仅捕获一个角色.该构造(.)+意味着"一个或多个捕获组,每个捕获组包含一个字符".它仅返回"d",因为这是遇到的捕获组的最后一次迭代.

如果您在捕获组内移动重复(.+),则您将要求"包含一个或多个字符的捕获组".这可能就是你想要的.

var pattern = /([^!=>< ]+)\s*([!=><]+)\s*(.+)/i;
Run Code Online (Sandbox Code Playgroud)