Regex 组合两个正则表达式-带lookback和lookahead

Regex 组合两个正则表达式-带lookback和lookahead,regex,Regex,我的任务是创建一个正则表达式,以匹配给定特定字符串(输入)的名称中的最后两个字符: 1732-George Washinton Junior-美国总统-1799 正则表达式应与以下内容匹配: ge、on或 我设法创建了一个只与名称匹配的正则表达式: (?我想你可以用 /(?<=^[^-]*\s-\s[^-]*)\S{2}(?!\S)/g /(?<=^\d+\s+-\s[^-]*)\S{2}(?!\S)/g (请注意,此正则表达式无法在regex101.com上测试,因为它不支持Un

我的任务是创建一个正则表达式,以匹配给定特定字符串(输入)的名称中的最后两个字符:

1732-George Washinton Junior-美国总统-1799

正则表达式应与以下内容匹配:

ge、on或

我设法创建了一个只与名称匹配的正则表达式:

(?我想你可以用

/(?<=^[^-]*\s-\s[^-]*)\S{2}(?!\S)/g
/(?<=^\d+\s+-\s[^-]*)\S{2}(?!\S)/g
(请注意,此正则表达式无法在regex101.com上测试,因为它不支持Unicode属性类,尽管当前Chrome、Firefox和Node.js中的JavaScript
RegExp
以及其他一些EnEnvironment已经支持它们)

JS演示:

const text=“1732-George Washinton Junior-美国总统-1799”;

console.log(text.match(/(?无需返回,最好继续。
它速度更快,并且与所有浏览器兼容

<代码>[a-z]{2}(?=\s(?[^-]*-){2}\s*\d+\s*$)


请参见

正则表达式是为什么编程语言或工具编写的?因此,本质上,您是在寻找类似于
\w+ge\w+on\w+或\b的东西,确保这三个词依次以“ge”、“on”和“or”结尾?我正在使用ECMAScript(在regex101.com上测试)ECMAScript有多种实现。您将使用哪种实现?当前Chrome和FireFox中使用的JavaScript?或C++/VBA ECMAScript 262?@JvdV抱歉,我应该更清楚地说明:正则表达式只应匹配名称每个部分的最后两个字符,而只匹配名称(而不是第二个“-”后的字符串)我没有投反对票。但如果你说“它更快”,那么最好支持它并解释原因。如果你说“它与所有浏览器兼容”然后,你还应该解释为什么,或者可能什么替代方案不是;特别是为了避免让人觉得所有其他答案都有缺点。或者解释它们是如何做的。我可以想象,有个男孩对你写的“我的答案比其他答案好”的印象不屑一顾没有支持。以下是投票的原因(上下)都是故意匿名的。@Yunnosch Fair points all.但更快、更好、更高效,请接受,因为这是一个卖点,我可以支持,但如果你不知道,那么我可以给你上私人课,但这不合适,是吗?我是针对初学者,不是像你这样的人。Ps,我不认为你是个人ly在Yunnosch对我投了反对票,所以你不必限定你的评论。另外,如果你看看我的声誉,你会看到一个连续的反对票在我身后,不是针对个人的,但如果我对regex了解不多,我会认为我的专业技能与我想象的不同。“但是更快、更好、更高效”,请通过解释来支持这一点。“请接受,因为这是一个卖点"不。我拒绝接受那些不受支持的陈述,因为它们是一个卖点。相反,它们是一个卖点,增加了通过解释来支持它们的必要性。私人课程不是StackOverflow的概念,但为每个人提供有见地的解释是。我更愿意澄清,如果我以一种否则的话,我可以理解为什么我投了否决票,也就是说,在像你这样的评论的直接背景下。
/(?<=^[^-]*\s-\s[^-]*)\p{L}{2}(?!\S)/gu