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

问题描述 投票:0回答:14

我正在尝试以下

Regex

/^[aeiou]\..*[aeiou]$/

但是它不起作用,我测试了“abcda”并且不匹配。

regex
14个回答
61
投票

应该是:

/^[aeiou].*[aeiou]$/

额外的

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

请注意,如果您还想匹配大写元音,您可以添加

i
修饰符,如下所示:

/^[aeiou].*[aeiou]$/i

如果您的目的是仅匹配结尾元音与开头元音相同的字符串,则使用反向引用

\1
,如下所示:

/^([aeiou]).*\1$/i

14
投票

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

^[aeiou].*[aeiou]$

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

^[a].*[a]$|^[e].*[e]$|^[i].*[i]$|^[o].*[o]$|^[u].*[u]$

14
投票
/^(a|e|i|o|u).*\1$/

这对我有用。

说明:

当您输入

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

因此,当输入

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

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

.
表示将评估除换行符之外的任何字符。

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

\1
充当第一组结果的参考,在本例中为
(a|e|i|o|u)

如果我们决定使用多行标志 (

$
),则
/m
字符表示字符串的结尾或行的结尾。


10
投票

以元音开头和结尾的单词

\b[aeiou](\w*[aeiou])?\b

\b
代表 单词边界(在本例中,是单词的开头 结尾)。可选分组
()?
用于匹配单个元音单词(对于葡萄牙语等语言非常重要,其中包含
o
a
e
等单词,甚至英语单词
I
。)。

开头且以相同元音

结尾的单词
\b(?<vowel>[aeiou])(\w*\k<vowel>)?\b

不要尝试用某些值替换

<vowel>
。它只是为了捕获匹配的元音。


5
投票

你可以试试这个。

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

* 反向引用,$ 用于结尾。


4
投票

实际上,现有的答案都没有涵盖单元音的极端情况。

以任意元音开头和结尾:

/^[aeiou]$|^[aeiou].*[aeiou]$/

故障解释:

  • ^[aeiou]$
    • ^
      - 字符串的开头
    • [aeiou]
      - 恰好一个元音。
    • $
      - 字符串的结尾。
  • |
    - 或:
  • ^[aeiou].*[aeiou]$
    • ^
      - 字符串的开头
    • [aeiou]
      - 恰好一个元音。
    • .*
      任意 - 零个或多个
    • [aeiou]
      - 恰好一个元音
    • $
      - 字符串的结尾。

以同一个元音开头和结尾

例如匹配

aba
,但匹配
abe
。我们可以回溯到第一个元音:

/^[aeiou]$|^([aeiou]).*\1$/

2
投票

我认为这个正则表达式最适合你:

/^a.*a$|^e.*e$|^i.*i$|^o.*o$|^u.*u$/

2
投票

以相同元音开头和结尾的单词的正则表达式是:

var re = /(\ba(\w+)a\b|\be(\w+)e\b|\bi(\w+)i\b|\bo(\w+)o\b|\bu(\w+)u\b)/g;

以any元音开头和结尾的单词的正则表达式是:

var re = /\b[aeiou]\w+[aeiou]\b/gi;

1
投票

或者你可以这样写:-

/^([aeiou]).+\1$/;


0
投票

这会起作用:

/^([aeiou]).+\1$/

0
投票

好吧,如果有人正在寻找正则表达式“以相同的元音结尾和开头” 这是代码。

/^([a|e|i|o|u]).*\1$/

演示


0
投票

let endsWithVowel = function(str) { let regex = /.*[aeiouAEIOU]$/ return regex.test(str) }

let endsWithVowel = function(str) {
let regex = /.*[aeiouAEIOU]$/
return regex.test(str)
}


0
投票

我也有像你一样的问题,你可以尝试这个正则表达式代码。它适用于我的情况

/^([aiueo]).*\1$/

-2
投票

试试这个:

/[aeiou]+[a-z]+[aeiou]+/i

© www.soinside.com 2019 - 2024. All rights reserved.