我有以下正则表达式:
lea
它的工作原理是检测短语何时与正则表达式匹配,但我特意尝试捕获/i'm [a-zA-Z]|i am [a-zA-Z]*/i
部分。
例如:
[a-zA-Z]
告诉我这个问题是否需要改进。 提前致谢! ^^
答案 0 :(得分:1)
自2018年起,Javascript最终支持lookbehind断言,因此一旦实现,以下内容应该在最新的浏览器中>>
:
test = "i am sam";
console.log(test.match(/(?<=i'm |i am )[a-zA-Z]+/))
&#13;
UPD:在撰写本文时,只有Chrome可以做到这一点,因此这个答案将在几个月后生效。与此同时,
test = "i am sam";
console.log(test.match(/(?:i'm |i am )([a-zA-Z]+)/)[1])
&#13;
答案 1 :(得分:0)
您可以使用捕获组([a-zA-Z]+)
捕获您的单词:
这将匹配
I # Match I ? # Match an optional white space ['a]m # Match ' or a followed by an m and a whitespace ( # Capture in a group [a-zA-Z]+ # Match lower or uppercase character one or more times ) # Close capturing group
你的话在第1组。
var pattern = /I ?['a]m ([a-zA-Z]+)/;
var strings = [
"I am good at this",
"I'm sam"
];
for (var i = 0; i < strings.length; i++) {
console.log(strings[i].match(pattern)[1]);
}