【问题标题】:Regex - Match words that contain 2 or more 2 letter sequences of vowels正则表达式 - 匹配包含 2 个或更多 2 个元音字母序列的单词
【发布时间】:2017-01-03 21:55:09
【问题描述】:

我想知道如何匹配包含 2 个或更多 2 个元音字母序列的单词(使用 javascript 版本的正则表达式)(例如 visionproof , steamier, preequip)。

我现在正在学习正则表达式,这就是我目前所掌握的(它只匹配包含 2 个元音字母序列的单词),也是我坚持的地方:

【问题讨论】:

标签: javascript regex


【解决方案1】:

每当我想测试不同的正则表达式时,我都会使用http://regex101.com。这是我想出的一个,我相信它可以满足您的需求。

var text = "visionproof vision proof threevowelswouldworktoo queued",
    regex = /\w*[aeiou]{2}\w*[aeiou]{2}\w*/ig;

console.log(text.match(regex));

\w 匹配单词字符。因此,这匹配 0 个或多个单词字符后跟 2 个元音,然后是 0 个或多个单词字符,然后是 2 个元音,然后是 0 个或多个单词字符。我的例子是here

【讨论】:

  • 这是不正确的......它匹配的不仅仅是一个单词。 regex101.com/r/knUUJQ/4
  • 感谢您的帮助,我认为即使某些带有数字的单词(极不可能)可能匹配,这也应该足够了。还有一个非常详尽的链接解释,干杯:)。
  • 如果你想排除数字,你可以用 [a-z] 替换每个出现的 \w。从@vks 对正则表达式的更改使它只匹配那个混乱中的单词。如果您根本不希望它找到那个词,请将 \b 放在开头和结尾。
【解决方案2】:
\b\w*[aeiou]{2}\w*[aeiou]{2}\w*\b

试试这个。查看演示。

https://regex101.com/r/Ph7a0P/3

【讨论】:

    【解决方案3】:
    1. 您需要对整个单词进行分组
    2. 您可能希望确保不要抓住元音组。
    3. 您需要最少 2 个字母,所以您需要 {2,}
    4. 您将需要 (?:[aeiou]{2,}) 部分 - 两次,因为您想不止一次地抓住它


    /(\w*(?:[aeiou]{2,})\w*(?:[aeiou]{2,})\w*)/g
    

    re = /(\w*(?:[aeiou]{2,})\w*(?:[aeiou]{2,})\w*)/g
    str = 'words that contains 2 or more letters sequesnces and some triiiiple visionproof, steamier, preequip'
    console.log(str.match(re))

    这里是 regex101 的链接:
    https://regex101.com/r/OtsdRA/2

    如果您希望单词 sssiiiisss 不匹配(因为您没有两个单独的元音块),您应该在两个元音块之间使用 \w+/(\w*(?:[aeiou]{2})\w+(?:[aeiou]{2})\w*)/g

    【讨论】:

    • 你的括号是多余的,因为如果你从你的正则表达式中删除所有(?:()的实例,它仍然会产生相同的输出:re = /\w*[aeiou]{2,}\w*[aeiou]{2,}\w*/g
    • 您好,感谢您的帮助和额外的提示或诸如 sssiiiisss 之类的词:)。
    【解决方案4】:

    下面的正则表达式可用于获取 2 个或更多序列的 2 个连续元音

    (\w*[aeiou]{2}\w*){2,}
    

    {2} 表示 2 个连续的元音 和 {2,} 用于 2 个或更多序列

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2015-02-21
      • 2018-07-30
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多