jookr
V2EX  ›  问与答

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

  •  
  •   jookr · Mar 10, 2015 · 2360 views
    This topic created in 4109 days ago, the information mentioned may be changed or developed.

    字符串'啊啊abc啊啊'

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

    Supplement 1  ·  Mar 10, 2015
    自己搞定了
    /(?<![0-9a-z])$val(?![0-9a-z])/is
    6 replies    2015-03-10 09:57:49 +08:00
    jookr
        1
    jookr  
    OP
       Mar 10, 2015
    能控制判断指定字符后面不能跟字符或者数字了
    echo preg_match("/b(?![0-9a-z])/ism",'啊啊abc啊b啊') ? "匹配" : '不匹配';

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

    另外没特殊需求的话用 /[^0-9a-zA-Z]b[^0-9a-zA-Z]/ 也行吧
    b821025551b
        6
    b821025551b  
       Mar 10, 2015
    @rrfeng 看LZ描述,还要考虑汉字吧,[x00-xff]
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4023 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:17 · PVG 08:17 · LAX 17:17 · JFK 20:17
    ♥ Do have faith in what you're doing.