我试图通过正则表达式拆分字符串并获得意外结果:
var str = 'name == abcd';
var pattern = /([^!=>< ]+)\s*([!=><]+)\s*(.)+/i;
pattern.exec(str);
Run Code Online (Sandbox Code Playgroud)
示例的结果是: [ "name == abcd", "name", "==", **"d"** ]
为什么"d"不"abcd"呢?
捕获组(.)仅捕获一个角色.该构造(.)+意味着"一个或多个捕获组,每个捕获组包含一个字符".它仅返回"d",因为这是遇到的捕获组的最后一次迭代.
如果您在捕获组内移动重复(.+),则您将要求"包含一个或多个字符的捕获组".这可能就是你想要的.
var pattern = /([^!=>< ]+)\s*([!=><]+)\s*(.+)/i;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |