我想验证字符串是由数字,逗号还是分号组成:
有效:1.234
有效期:1,234
无效:1.23a
无效:1.2_4
什么有效:
使用str_split
从字符串中创建数组,并将in_array
与array(0,1,2,3,4,5,6,7,8,9,',',';')
一起使用。
但这让我感到迂回,因为我必须用数百万字符串来做这件事,我想确保没有更有效的方法。
问题:有更有效的方法吗?
答案 0 :(得分:4)
如果您只需要验证字符串(不清理或修改它),您可以使用正则表达式。请尝试以下方法:
if (preg_match('/^[0-9\,\;\.]+$/', $string)) {
// ok
} else {
// not ok
}
答案 1 :(得分:2)
使用preg_match
函数的解决方案:
// using regexp for (numbers OR commas OR semicolons) - as you've required
function isValid($str) {
return (bool) preg_match("/^([0-9.]|,|;)+$/", $str);
}
var_dump(isValid("1.234")); // bool(true)
var_dump(isValid("1.23a")); // bool(false)
var_dump(isValid("1,234")); // bool(true)