Альфа-цифра с шаблоном регулярных выражений подчеркивания

Я расширяю библиотеку проверки формы CodeIgniter для проверки значений Alpha Numeric с символами подчеркивания, исключая тире . Но я очень новичок в шаблонах регулярных выражений и хотел бы помочь …

В настоящее время для alpha_numeric CI есть:

return ( ! preg_match("/^([a-z0-9])+$/i", $str)) ? FALSE : TRUE; 

И для alpha_dash CI имеет:

 return ( ! preg_match("/^([-a-z0-9_-])+$/i", $str)) ? FALSE : TRUE; 

И я создаю «alpha_underscore» (который снова будет буквенно-цифровым с подчеркиванием):

Это верно?

 return ( ! preg_match("/^([a-z0-9_])+$/i", $str)) ? FALSE : TRUE; 

Я смущен, почему в начале и конце шаблона «alpha_dash» есть «-»

Класс символов [-a-z0-9_-] совпадает с [a-z0-9_-] или [-a-z0-9_] .

Один из них - можно отбросить.

Персонаж был просто дублирован. Вы можете удалить один экземпляр, и регулярное выражение должно работать нормально.