php - 正则表达式:四个字母,然后字母中至少有一位是a e i o u,这个怎么写呢?
迷茫
迷茫 2017-04-10 17:32:54
[PHP讨论组]

这个有点难度的,/[aeiou]{1,4}/ 这样写有点问题的

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
PHP中文网
/^(?=.{4}$)([a-z]*[aeiou]{1,4}[a-z]*)$/

: )

补充,这个版本原理是一样的,更简洁一些:

/^(?=[a-z]{4}$)(.*[aeiou]{1,4}.*)$/

下面这个是MariaDB,可惜在MySQL上面行不通

在MySQL里面拆成两个执行:

ringa_lee

/^(?=^[a-zA-Z]{0,3}[aeiou])[a-zA-Z]{4}$/

天蓬老师
grep -P '^(?=.*[aeiou])[a-zA-Z]{4}$'

(?=.*[aeiou]) 表示存在一个位置,什么位置呢?这个位置之后必会出现aeiou其中之一。由于这个位置在^之后,简单理解为:开头插入了一个预言,这个预言是:^之后必会至少出现aeiou其中之一。

[a-zA-Z]{4} 没什么好说的

于是整个 '^(?=.*[aeiou])[a-zA-Z]{4}$' 翻译过来就是:
一开头(^)我预言之后必会至少出现aeiou其中之一,4个字母后结束($)

怪我咯

([aeiou]...)|(.[aeiou]..)|(..[aeiou].)|(...[aeiou])

PHP中文网

@shiji 的解答没问题,拆开就是了,效率上也不存在问题。
先匹配一次 /[a-z]{4}/,再匹配 /[aeiou]+/

伊谢尔伦

/^(?=[a-z]{4}$)(.[aeiou]{1,4}.)$/

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号