Шаблон, який ви хочете, є приблизно таким ( див. Його на 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
Примітка щодо специфікації
Здається, це відповідає вашим специфікаціям, але зауважте, що це буде відповідати таким речам, як .....тощо, що може бути чи не тим, що ви бажаєте. Якщо ви можете конкретніше визначити, якому шаблону ви хочете відповідати, регулярний вираз буде дещо складнішим.
Наведений вище регулярний вираз також відповідає порожньому рядку. Якщо вам потрібен хоча б один символ, тоді використовуйте +(один або більше) замість *(нуль або більше) для повторення.
У будь-якому випадку, ви можете додатково уточнити свою специфікацію (завжди допомагає, коли задаєте питання про регулярний вираз), але, сподіваємось, ви також можете навчитися писати шаблон самостійно, враховуючи вищезазначену інформацію.