Php 正则表达式确保字符串仅包含管道、数字和/或逗号,

Php 正则表达式确保字符串仅包含管道、数字和/或逗号,,php,regex,preg-match,Php,Regex,Preg Match,我如何确保字符串只包含数字和管道(或同时包含逗号和字符)?所有字符都是数字和管道或数字、逗号和管道 EG: 1|2,2|3 = true 1|2 = true bob = false bob|yes,no = false 这是我到目前为止所能做的 if (preg_match('/^[0-9|]|[0-9,|]+$/', $str)){ //if all of the characters are only numbers and pipes or

我如何确保字符串只包含数字和管道(或同时包含逗号和字符)?所有字符都是数字和管道或数字、逗号和管道

EG: 
1|2,2|3    = true
1|2        = true
bob        = false
bob|yes,no = false
这是我到目前为止所能做的

if (preg_match('/^[0-9|]|[0-9,|]+$/', $str)){ 
   //if all of the characters are only numbers and pipes or numbers, commas and pipes only

}
请尝试以下操作:

function ensure($str) {
    return (bool) preg_match('/^[\d|,]+$/', $str);
}

var_dump(ensure('1|2,2|3'));
var_dump(ensure('1|2'));
var_dump(ensure('16|2'));
var_dump(ensure('bob'));
var_dump(ensure('bob|yes,no'));
var_dump(ensure(''));
印刷品

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
请尝试以下操作:

function ensure($str) {
    return (bool) preg_match('/^[\d|,]+$/', $str);
}

var_dump(ensure('1|2,2|3'));
var_dump(ensure('1|2'));
var_dump(ensure('16|2'));
var_dump(ensure('bob'));
var_dump(ensure('bob|yes,no'));
var_dump(ensure(''));
印刷品

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)

@Itay,没有必要在
[]
中转义
,因为特殊字符在
[]]
中失去了意义@Itay,没有必要在
[]
中转义
因为特殊字符在
[]
中失去了意义。目前我认为大于10的数字不起作用,可能这就是我原来的错误所在,这些数字没有任何意义ceiling@user26676,它按预期工作。周围是否有空格?不,你是对的,我可以看到preg正在使用ideone(顺便说一句,不错的网站,对我来说是新的!)我必须深入研究我的代码。它的工作原理是,
$\u请求
变量名一直都有一个输入错误。此时,我认为大于10的数字不起作用,例如:16 | 2,可能这就是我原来的错误所在,这些数字没有任何意义ceiling@user26676,它按预期工作。周围有没有空间?没有,你是对的,我可以看到preg正在使用ideone(顺便说一句,很好的网站,对我来说是新的!)我必须深入研究我的代码。它的工作原理是,
$\u请求
变量名一直都有输入错误