我正在尝试编写一个正则表达式,以匹配连续出现3个或更多不同的元音字母。 我知道如何编写一个正则表达式来搜索3个相同的元音字母。
/([aeuioy])\\1{2,}/
关于这个问题,大概有三种不同的思路...你有什么想法吗?
请帮我解决这个问题!实际上我脑子里一片空白。
我正在尝试编写一个正则表达式,以匹配连续出现3个或更多不同的元音字母。 我知道如何编写一个正则表达式来搜索3个相同的元音字母。
/([aeuioy])\\1{2,}/
关于这个问题,大概有三种不同的思路...你有什么想法吗?
请帮我解决这个问题!实际上我脑子里一片空白。
查找 3 个连续的元音字母。将第一个字母进行分组。在第一个字母之后,使用负向预查来检查它是否不是 #1。通过该测试后,捕获下一个字符。然后使用 两个 负向预查,一个用于检查它是否不是 #1,另一个用于检查它是否不是 #2。
后面的步骤可以将其 OR 合并为单个预查。
(?=[aeouiy]{3})(.)(?!\1)(.)(?!\1|\2).
你不需要对最后一个字符进行测试。第一个 Lookahead 确保它是 aeouiy
中的一个;第三个负向 Lookahead 确保它既不是第一个字符也不是第二个字符。
虽然这不一定是最实用的选择,但到目前为止,这是唯一一个“真正”的正则表达式:
(iea|oea|uea|yea|eia|oia|uia|yia|eoa|ioa|uoa|yoa|eua|iua|oua|yua|eya|iya|oya|uya|iae|oae|uae|yae|aie|oie|uie|yie|aoe|ioe|uoe|yoe|aue|iue|oue|yue|aye|iye|oye|uye|eai|oai|uai|yai|aei|oei|uei|yei|aoi|eoi|uoi|yoi|aui|eui|oui|yui|ayi|eyi|oyi|uyi|eao|iao|uao|yao|aeo|ieo|ueo|yeo|aio|eio|uio|yio|auo|euo|iuo|yuo|ayo|eyo|iyo|uyo|eau|iau|oau|yau|aeu|ieu|oeu|yeu|aiu|eiu|oiu|yiu|aou|eou|iou|you|ayu|eyu|iyu|oyu|eay|iay|oay|uay|aey|iey|oey|uey|aiy|eiy|oiy|uiy|aoy|eoy|ioy|uoy|auy|euy|iuy|ouy)
(?=[aeouiy]{3}$)(?!.*(.).*\1).*$
(?!.*(.).*\1)
的作用是确保无法匹配重复的字符!
abcdefhij
是有效的吗? - Toto