Шаблон, который вам нужен, выглядит примерно так ( см. Его на rubular.com ):
^[a-zA-Z0-9_.-]*$
Пояснение:
^
это начало строки привязки
$
конец строки привязки
[...]
определение класса символов
*
повторение "ноль или более"
Обратите внимание, что буквальное тире -
является последним символом в определении класса символов, иначе оно имеет другое значение (например, диапазон). В.
Также имеет различные определения классов смысл за пределами характер, но внутри, это просто буквальный.
Ссылки
В PHP
Вот отрывок, показывающий, как можно использовать этот шаблон:
<?php
$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);
foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}
?>
Приведенные выше отпечатки ( как видно на ideone.com ):
screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!
Обратите внимание, что узор немного отличается, \w
вместо него используется . Это класс символов для "словесных символов".
Ссылки API
Примечание по спецификации
Кажется, это соответствует вашей спецификации, но обратите внимание, что это будет соответствовать таким вещам, как .....
и т. Д., Которые могут или не могут быть тем, что вы хотите. Если вы можете более точно указать, какой шаблон вы хотите сопоставить, регулярное выражение будет немного сложнее.
Вышеупомянутое регулярное выражение также соответствует пустой строке. Если вам нужен хотя бы один символ, используйте +
(один или несколько) вместо *
(ноль или более) для повторения.
В любом случае вы можете дополнительно уточнить свою спецификацию (всегда помогает при задании вопроса о регулярном выражении), но, надеюсь, вы также можете научиться писать шаблон самостоятельно, учитывая приведенную выше информацию.