我正在尝试以下
Regex
:
/^[aeiou]\..*[aeiou]$/
但是它不起作用,我测试了“abcda”并且不匹配。
应该是:
/^[aeiou].*[aeiou]$/
额外的
\.
需要第二个字符是一个文字点,例如:“a.hello”。但由于您的测试用例“abcda”不包含这样的点,因此它不匹配。
请注意,如果您还想匹配大写元音,您可以添加
i
修饰符,如下所示:
/^[aeiou].*[aeiou]$/i
如果您的目的是仅匹配结尾元音与开头元音相同的字符串,则使用反向引用
\1
,如下所示:
/^([aeiou]).*\1$/i
以元音开头和结尾的单词正则表达式。
^[aeiou].*[aeiou]$
单词开头和结尾相同元音的正则表达式。
^[a].*[a]$|^[e].*[e]$|^[i].*[i]$|^[o].*[o]$|^[u].*[u]$
/^(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
字符表示字符串的结尾或行的结尾。
\b[aeiou](\w*[aeiou])?\b
\b
代表 单词边界(在本例中,是单词的开头 和 结尾)。可选分组 ()?
用于匹配单个元音单词(对于葡萄牙语等语言非常重要,其中包含 o
、a
和 e
等单词,甚至英语单词 I
。)。
\b(?<vowel>[aeiou])(\w*\k<vowel>)?\b
不要尝试用某些值替换
<vowel>
。它只是为了捕获匹配的元音。
你可以试试这个。
var re = /^([a,e,i,o,u]).*\1$/;
* 反向引用,$ 用于结尾。
实际上,现有的答案都没有涵盖单元音的极端情况。
/^[aeiou]$|^[aeiou].*[aeiou]$/
故障解释:
^[aeiou]$
^
- 字符串的开头[aeiou]
- 恰好一个元音。$
- 字符串的结尾。|
- 或:^[aeiou].*[aeiou]$
^
- 字符串的开头[aeiou]
- 恰好一个元音。.*
任意 - 零个或多个[aeiou]
- 恰好一个元音$
- 字符串的结尾。例如匹配
aba
,但不匹配abe
。我们可以回溯到第一个元音:
/^[aeiou]$|^([aeiou]).*\1$/
我认为这个正则表达式最适合你:
/^a.*a$|^e.*e$|^i.*i$|^o.*o$|^u.*u$/
以相同元音开头和结尾的单词的正则表达式是:
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;
或者你可以这样写:-
/^([aeiou]).+\1$/;
这会起作用:
/^([aeiou]).+\1$/
let endsWithVowel = function(str) { let regex = /.*[aeiouAEIOU]$/ return regex.test(str) }
let endsWithVowel = function(str) {
let regex = /.*[aeiouAEIOU]$/
return regex.test(str)
}
我也有像你一样的问题,你可以尝试这个正则表达式代码。它适用于我的情况
/^([aiueo]).*\1$/
试试这个:
/[aeiou]+[a-z]+[aeiou]+/i