Я использую это условие, чтобы проверить, является ли значение буквенно-цифровым значением:
$value =~ /^[a-zA-Z0-9]+$/
Как я могу изменить это регулярное выражение, чтобы учесть возможную точку . в значении, не принимая другие специальные символы?
.
$value =~ /^[a-zA-Z0-9.]+$/
Использование alnum класса символов Posix , на один символ короче:)
alnum
value =~ /^[[:alnum:].]+$/;
Не забудьте опцию /i и класс символов \d.
/i
\d
$value =~ /^[a-z\d.]+$/i
Если вы не хотите разрешать какие-либо символы, кроме тех, которые разрешены в классе символов, вы не должны использовать привязку конца строки $, поскольку это допускает завершающий перевод новой строки. Вместо этого используйте абсолютную привязку конца строки \z:
$
\z
$value =~ /^[a-z0-9.]+\z/i;
Посмотрите на perl регулярные выражения
\w Match "word" character (alphanumeric plus "_") $value =~ /^[\w+.]\.*$/;