如何校验以下字符串?

字符串只能包换. , / :,不能包含其他字符,只需要校验字符串是否只包含以上4个字符即可。

$string = '10.0.3.1, 10.0.0.0/16,2001:db8:100:934b::3:1, 2001:db8:100:934b::/64';
if (checkString($string)) {
    return true;
} else {
    return false;
}

function checkString(string $string) {
// 怎么校验?
}

// 尝试了下面的,结果不是我想要的
if (preg_match('/^(\.|\,|\/|\:)+$/', $string)) {
    var_dump('yes');
} else {
    var_dump('no');//返回了no
}

// 找到了答案
if (preg_match('/^[a-zA-Z0-9.\/:, ]+$/', $string)) {
    var_dump('yes');
} else {
    var_dump('no');
}
阅读 2.2k
3 个回答

不为空 /^[.,/:]+$/
可为空 /^[.,/:]*$/
你这个提问是不是提错了。一个字符串 只 包含'.,/:' 有什么校验的意义

正则
^[.,/:]+$

/^(\.|\,|\/|\:|[A-Za-z0-9]|\s)+$/ 这样?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题