- var_dump: documentation ( source)
- preg_match: documentation ( source)
<?php
# The problem, hyphen use within class in incorrect position.
var_dump(preg_match('~[0-9\w-.]*~', ''));
# The fix, or we escape the hyphen or we put it last
var_dump(preg_match('~[0-9\w\-.]*~', ''));
var_dump(preg_match('~[0-9\w.-]*~', ''));