2016-08-06 4 views
1

Я хочу проверить имена загруженных файлов. На данный момент, у меня есть следующее регулярное выражение, которое соответствует только буквенно-цифровые символы, тире и подчеркивающий:Regex для проверки alpha_dash и ровно одного символа точки

/^[\w-]*$/ 

Однако, я должен также гарантировать, что имя файла содержит ровно один точечный характер. Как мне изменить это регулярное выражение для достижения желаемого результата?

+2

_О ваш regex_, будьте осторожны, это может показаться правильным, но ** [ 'это не совсем то, что вы think'] (HTTP: //stackoverflow.com/documentation/regex/1757/character-classes/9991/character-class-and-common-problems-faced-by-beginner#t=201608061800584842834)** – rock321987

+0

@ rock321987 Я слышал это раньше, но все же не понимают разницы между '[\ w]' и '[a-zA-Z0-9_]'. Документы [Переполнение стека] (http://stackoverflow.com/documentation/regex/1757/character-classes#t=201608062355504305058&a=remarks-common-classes-1) говорят, что они равны, кстати. –

+1

Вы уже редактировали свой вопрос. Регулярное выражение, которое вы использовали, было '^ [\ w - \.] * $' И '-' внутри символьного класса обозначает диапазон, и оно не будет соответствовать' -' буквально – rock321987

ответ

3

Вытащите период из вашего класса символов, например:

/^[\w-]*\.[\w-]*$/ 
Смежные вопросы