Как я могу разрешить буквальную точку в регулярном выражении Perl? - PullRequest
14 голосов
/ 15 апреля 2010

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

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

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

Ответы [ 5 ]

24 голосов
/ 15 апреля 2010
$value =~ /^[a-zA-Z0-9.]+$/
3 голосов
/ 15 апреля 2010

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

value =~ /^[[:alnum:].]+$/; 
2 голосов
/ 15 апреля 2010

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

$value =~ /^[a-z\d.]+$/i
1 голос
/ 16 апреля 2010

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

 $value =~ /^[a-z0-9.]+\z/i;
0 голосов
/ 15 апреля 2010

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

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


$value =~ /^[\w+.]\.*$/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...