Как я могу позволить литеральную точку в регулярном выражении Perl?

Я использую это условие проверить, является ли значение алфавитно-цифровыми значениями:

$value =~ /^[a-zA-Z0-9]+$/

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

14
задан brian d foy 16 April 2010 в 03:54
поделиться

5 ответов

$value =~ /^[a-zA-Z0-9.]+$/
24
ответ дан 1 December 2019 в 09:12
поделиться

Не забудьте параметр / i и класс символов \ d .

$value =~ /^[a-z\d.]+$/i
2
ответ дан 1 December 2019 в 09:12
поделиться

Если вы не хотите разрешать использование каких-либо символов, кроме разрешенных в классе символов, вам не следует использовать привязку конца строки $ , поскольку это допускает завершающуюся новую строку. Вместо этого используйте абсолютную привязку конца строки \ z :

 $value =~ /^[a-z0-9.]+\z/i;
1
ответ дан 1 December 2019 в 09:12
поделиться

Использование alnum класса символов Posix , на один символ короче :)

value =~ /^[[:alnum:].]+$/; 
3
ответ дан 1 December 2019 в 09:12
поделиться

Посмотрите на регулярные выражения perl

\w  Match "word" character (alphanumeric plus "_")


$value =~ /^[\w+.]\.*$/;
-1
ответ дан 1 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: