Javascript 如何";“反向格式”;

Javascript 如何";“反向格式”;,javascript,node.js,string-formatting,Javascript,Node.js,String Formatting,我试图找到一种从字符串输入中捕获数据的方法,并将它们放在易于使用的容器中。例如: var message = "Sarah has been promoted to Superintendent"; 我知道如何根据正则表达式测试字符串,并返回是否匹配: message.test(\[a-zA-Z]+ has been promoted to [a-zA-Z]+\g); 然而,我很难弄清楚如何找到正则表达式匹配的索引,从而将它们放置在对象中: Promotion { name: "Sarah"

我试图找到一种从字符串输入中捕获数据的方法,并将它们放在易于使用的容器中。例如:

var message = "Sarah has been promoted to Superintendent";
我知道如何根据正则表达式测试字符串,并返回是否匹配:

message.test(\[a-zA-Z]+ has been promoted to [a-zA-Z]+\g);
然而,我很难弄清楚如何找到正则表达式匹配的索引,从而将它们放置在对象中:

Promotion { name: "Sarah" , position: "Superintendent" }
我觉得答案就在我的脑细胞顶端,但我不知所措。捕获(比如)字符串中第一个通配符的索引、分隔该单词,然后对下一个数据段执行该操作的步骤是什么(足够灵活,可以处理多达9个左右的“通配符段”

我会给你

["Sarah has been promoted to Superintendent", "Sarah", "Superintendent"]
通过删除
g
标志,您允许它只匹配一次,这允许它将匹配括号内子模式的子字符串放入数组中,并使用
exec
而不是
test
将数组取回,而不是布尔值

如果
match
不为空,则从左到右的第一个括号子模式将位于
match[1]
中,第二个位于
match[2]

我会给你

["Sarah has been promoted to Superintendent", "Sarah", "Superintendent"]
通过删除
g
标志,您允许它只匹配一次,这允许它将匹配括号内子模式的子字符串放入数组中,并使用
exec
而不是
test
将数组取回,而不是布尔值


如果
match
不为空,则从左到右的第一个括号子模式将位于
match[1]
中,而
match[2]
中的第二个子模式是,您需要捕获组

var message = "Sarah has been promoted to Superintendent";
var match = /([a-zA-Z]+) has been promoted to ([a-zA-Z]+)/g.exec(message);
console.log(match[1], match[2]);
输出

Sarah Superintendent

有关
RegExp.exec()

的详细说明,请参阅。是的,您需要捕获组

var message = "Sarah has been promoted to Superintendent";
var match = /([a-zA-Z]+) has been promoted to ([a-zA-Z]+)/g.exec(message);
console.log(match[1], match[2]);
输出

Sarah Superintendent

有关
RegExp.exec()
的详细说明,请参阅查看
String.prototype.match

let message=“Sarah已晋升为主管”;
let[,name,position]=message.match(/([a-zA-Z]+)已升级为([a-zA-Z]+)/);
让升级={name,position};

console.log(升级);
签出
String.prototype.match

let message=“Sarah已晋升为主管”;
let[,name,position]=message.match(/([a-zA-Z]+)已升级为([a-zA-Z]+)/);
让升级={name,position};

console.log(升级);
您正在寻找正则表达式组!是否应将
\[a-zA-Z]+中的斜杠升级为[a-zA-Z]+\g
向前?是否应将
/[a-zA-Z]+升级为[a-zA-Z]+/g
您正在寻找正则表达式组!是否应将
\[a-zA-Z]+中的斜杠升级为[a-zA-Z]+\g
向前+已升级为[a-zA-Z]+/g此语言比我以前的学校自己高得多。我使用for loops解决了此问题,但这更易于使用。谢谢此语言比我以前的学校自己高得多。我使用for loops解决了此问题,但这更易于使用。谢谢