是否有更优雅的方法为preg_match编写正则表达式,以逗号分隔的字符串查找数字?
YES = 3或者3或3,或者3,(虽然任何一方都没有逗号的3可能永远不会发生)
NO = 13或13,或13或13,
这是我写的,似乎有用......
preg_match("/(,3,|,3(?!\d)|(?<!\d)3\,)/", $_SESSION['field_list'])
答案 0 :(得分:0)
您可以使用更一般的模式:
$pattern = '~(?<=^|\D)3(?=\D|$)~';
测试逗号的存在似乎不是很有用,因为你允许所有不是你的示例模式中的数字。
您可以限制性更强,仅允许使用白色字符或逗号:
$pattern = '~(?<=^|\s|,)3(?=\s|,|$)~';
注意:如果仅用于测试,则可以通过非捕获组替换外观:
$pattern = '~(?:^|\D)3(?:\D|$)~';
或
$pattern = '~(?:^|\s|,)3(?:\s|,|$)~';
答案 1 :(得分:0)
答案 2 :(得分:0)