gpt4 book ai didi

javascript - Javascript正则表达式

转载 作者:行者123 更新时间:2023-12-02 05:55:56 26 4
gpt4 key购买 nike

当我遇到这个问题时,我正在尝试为其他人做一个正则表达式。要求是正则表达式应从其中包含“apple”的一组字符串返回结果。例如,考虑以下字符串:
"I have an apple""You have two Apples""I give you one more orange"
结果集应具有前两个字符串。

我尝试过的正则表达式是:
/[aA]pple//[^a-zA-Z0-9][aA]pple/
第一个的问题是诸如“aapple”,“bapple”等之类的单词(好的,所以它们没有意义,但仍然...)对其测试呈阳性,而第二个的问题是当字符串实际上以“苹果”,“苹果和橙子”一词开头,例如,它测试否定。有人可以解释为什么第二个正则表达式会以这种方式运行以及正确的正则表达式是什么吗?

最佳答案

/(^.*?\bapples?\b.*$)/i

编辑:上面将匹配包含单词“apples”的整个字符串,我认为这是您要的。如果您只是想查看字符串中是否包含单词,则可以执行以下操作。
/\bapples?\b/i

The regex(es) I tried are:

/[aA]pple/ and /[^a-zA-Z0-9][aA]pple/



第一个只是按顺序检查以下字符的存在:苹果,无论它们在什么上下文中使用。\ b或单词边界字符都与非单词字符和单词字符的任何位置匹配见面,ala \W\w

第二个字符试图在a-p-p-l-e出现之前匹配其他字符,并且与第一个字符基本相同,只是它前面需要其他字符。

我回答的那个如下。从字符串的开头开始,非贪婪地匹配所有字符(如果存在),直到遇到单词边界为止。如果字符串以apple开头,则字符串的开头是单词边界,因此它仍然匹配。然后,它与字母 a-p-p-l-es(如果存在)匹配,后跟另一个单词边界。然后将所有字符匹配到字符串的末尾。最后的/ i表示不区分大小写,因此'Apple','APPLE'和'apple'均有效。

如果您有时间,我强烈建议您浏览 http://regular-expressions.info的教程。它真的深入探讨了正则表达式引擎如何匹配不同的表达式,这对我很有帮助。

关于javascript - Javascript正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579181/

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