求一个简单正则表达式 php 的

2015-03-10 00:50:21 +08:00
 jookr

字符串'啊啊abc啊啊'

表达式如何写才能判断是否只包含b一个字符?
b的前后如果有数字或者字母都为false

1725 次点击
所在节点    问与答
6 条回复
jookr
2015-03-10 00:55:18 +08:00
能控制判断指定字符后面不能跟字符或者数字了
echo preg_match("/b(?![0-9a-z])/ism",'啊啊abc啊b啊') ? "匹配" : '不匹配';

但是前面就不懂怎么控制了
abelyao
2015-03-10 00:57:32 +08:00
描述不清楚,有歧义:
1. 整个字符串只有一个 b 字符?例如 'b'
2. 整个字符串中只能有 b 这个字符?例如 'bbbbbbb'
3. 前后可以是汉字但不能是字母或数字?例如 '丑B不约'
4. 前后能否包含符号?
5. 前后能否包含中日韩的生僻汉字?
Tianpu
2015-03-10 01:34:42 +08:00
!preg_match('/[0-9a-z]b/i',$var) && !preg_match('/b[0-9a-z]/i',$var)
Tianpu
2015-03-10 01:36:22 +08:00
好像有问题,主要是需求描述也有问题,无法最终修正。
rrfeng
2015-03-10 09:41:36 +08:00
@jookr
前置零宽断言和后置零宽断言不都是一起讲的吗?为什么只会其中一个……

另外没特殊需求的话用 /[^0-9a-zA-Z]b[^0-9a-zA-Z]/ 也行吧
b821025551b
2015-03-10 09:57:49 +08:00
@rrfeng 看LZ描述,还要考虑汉字吧,[x00-xff]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/175679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX