gpt4 book ai didi

Javascript 正则表达式匹配以某些字符结尾但不以这些字符的特定组合结尾的字符串

转载 作者:可可西里 更新时间:2023-11-01 01:45:13 25 4
gpt4 key购买 nike

假设使用 Javascript,我想匹配以 [abcde]* 但不是以 abc 结尾的字符串。

因此正则表达式应该匹配 xxxaxxxbcxxxabd 但不匹配 xxxabc

我很困惑。

编辑:出于某种原因我必须使用正则表达式,我无法做某事if (str.endsWith("abc"))

最佳答案

解决方案很简单:使用否定前瞻:

(?!.*abc$)

这断言字符串不以 abc 结尾。

你提到你还需要字符串以 [abcde]* 结尾,但是 * 意味着它是可选的,所以 xxx火柴。我假设您真的想要 [abcde]+,这也只是意味着它需要以 [abcde] 结尾。在那种情况下,断言是:

(?=.*[abcde]$)(?!.*abc$)

参见 regular-expressions.info有关正面和负面环视的教程。


我不愿意给出实际的 Javascript 正则表达式,因为我不熟悉这种语言(尽管我相信断言如果支持的话会起作用——根据 regular-expressions.info,Javascript 支持正向和负向前瞻) .感谢 Pointy 和 Alan Moore 的评论,我认为正确的 Javascript 正则表达式是这样的:

var regex = /^(?!.*abc$).*[abcde]$/;

请注意,此版本(归功于 Alan Moore)不再需要正面前瞻。它只是匹配 .*[abcde]$,但首先断言 ^(?!.*abc$)

关于Javascript 正则表达式匹配以某些字符结尾但不以这些字符的特定组合结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com