You*_*ijn 3 php regex preg-match
我想验证我的输入是否包含8个十六进制字符后跟下划线,后跟任意数量的包含任何值的章程.
我目前正在使用以下正则表达式:
preg_match('/^[0-9A-Fa-f]{8}_*/', $value);
Run Code Online (Sandbox Code Playgroud)
但是这个表达式不能满足我的需求,因为它的行为方式如下
结果:
1A345678 (true)
1A345678_add (true)
1234567890 (true)
ABSDBASDB (false)
Run Code Online (Sandbox Code Playgroud)
预期结果:
1A345678 (false)
1A345678_add (true)
1234567890 (false)
ABSDBASDB (false)
Run Code Online (Sandbox Code Playgroud)
我的正则表达式出了什么问题?
你只是错过了一个 .
preg_match('/^[0-9A-Fa-f]{8}_.*/', $value);
Run Code Online (Sandbox Code Playgroud)
与_*你匹配0或多个下划线.*是一个量词,重复前面的字符或组0次或更多次.因此它也匹配最后没有下划线的字符串(0的重复)
. 是一个正则表达式特殊字符,匹配任何字符(默认情况下除了换行符)