正则表达式将单词的开头和结尾与元音相匹配

Par*_*ngh 7 regex

我正在尝试以下方面Regex:

/^[aeiou]\..*[aeiou]$/
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我测试了"abcda"并且不匹配.

tri*_*cot 23

它应该只是:

/^[aeiou].*[aeiou]$/
Run Code Online (Sandbox Code Playgroud)

额外的\.你需要第二个字符是一个文字点,如:"a.hello".但由于您的测试用例"abcda"不包含这样的点,因此它不匹配.

请注意,如果您还想匹配大写元音,则可以添加i修饰符,如下所示:

/^[aeiou].*[aeiou]$/i
Run Code Online (Sandbox Code Playgroud)

如果你的意图只是匹配结尾元音与开头的元音相同的字符串,那么使用这样的反向引用\1:

/^([aeiou]).*\1$/i
Run Code Online (Sandbox Code Playgroud)


小智 11

正则表达式以元音开头和结尾。

^[aeiou].*[aeiou]$
Run Code Online (Sandbox Code Playgroud)

正则表达式以相同的元音开头和结尾。

^[a].*[a]$|^[e].*[e]$|^[i].*[i]$|^[o].*[o]$|^[u].*[u]$
Run Code Online (Sandbox Code Playgroud)


小智 9

以元音开头和结尾的单词

\b[aeiou](\w*[aeiou])?\b
Run Code Online (Sandbox Code Playgroud)

\b代表词边界(在这种情况下,词的开头结尾)。可选的分组()?是否有匹配单个元音的话(像葡萄牙人一样的话语言非常重要oa而且e甚至是英文单词I)。

相同元音开头结尾的单词

\b(?<vowel>[aeiou])(\w*\k<vowel>)?\b
Run Code Online (Sandbox Code Playgroud)

不要尝试替换<vowel>某些值。它只是用于捕获匹配的元音。


小智 7

/^(a|e|i|o|u).*\1$/
Run Code Online (Sandbox Code Playgroud)

这对我有用。

解释:

当您输入^字符时,表示您正在验证开始的字符串。括号是组分隔符。

因此,当放置时,(a|b|c)您是在告诉要测试的第一组将与ab、 或匹配c。在示例中,它标记为 group (a|e|i|o|u)。这意味着字符串必须以这些字符中的任何一个开头。

|字符充当布尔 OR 比较器。

.表示,除了新行的任何字符将被评估。

*表明我们期待0个或更多字符匹配。

\1作为来自第一组的结果的参考,在这种情况下(a|e|i|o|u)

$如果我们决定使用多行标志 ( /m) ,则该字符表示字符串的结尾或行的结尾。

希望这可以帮助。

  • 嗯,这个“解释”不是我想要的。但是,您应该通过编辑答案来将解释添加到答案中。“简洁是可以接受的,但更全面的解释更好。”:https://stackoverflow.com/help/how-to-answer (4认同)

小智 5

你可以试试这个。

var re = /^([a,e,i,o,u]).*\1$/;
Run Code Online (Sandbox Code Playgroud)

*\1 反向引用,$ 用于结束。