Как проверить буквенно-цифровую строку с подчеркиванием фиксированного формата в Perl
Привет Команда,
Я новичок в perl-скрипте и использую регулярное выражение для проверки пользовательского ввода в фиксированном формате.Я должен принять только два формата строки в качестве входных данных.
Формат 1# R99.999 {До любого числа, но оно должно начинаться с R и доходить до некоторых цифр после десятичной дроби}
Формат 2# ABCHD1234_GHI123_XYZ123_R99.999 {любой символ верхнего и нижнего регистра с цифрой и подчеркиванием перед R99.999 будет там всегда}
Все остальное приведет к тому, что сценарий потерпит неудачу.
Что я уже пробовал:
I have written below piece of code but getting error. #! /usr/bin/perl -w my $usage = "Usage : $0 <user input is required> # Validation of user input if (($dest !~ /^R\d+\.\d/) || ($dest !~ "/^[\w_]+/R\d+\.\d/")){ die "ERROR: $dest is not a valid input"; } esle { print " $dest is correct"; } I got error like- Search pattern not rterminated at ./MyTest.pl line Note- if ($dest !` /^R\d+\.\d/) this works alone to validate input like R99.999 but we need to validate both formats
Peter_in_2780
если (($dest !~ /^R\d+\.\d/) || ($dest !~ "/^[\w_]+/R\d+\.\d/")){
Как раз перед вторым р у вас есть ложная /
JaanVvk
Итак, вы предлагаете удалить '/' перед вторым R?
JaanVvk
Когда я удалил его, он выдает еще одну ошибку, например-
если (($dest !~ /^R\d+\.\d/) || ($dest !~ "/^[\w_]+R\d+\.\d/")){
Ошибка - обратная косая черта найдена там, где оператор ожидал около "R\"
Строка без кавычек "d" может столкнуться с будущим зарезервированным словом
Синтаксическая ошибка рядом с буквой "R".
Мне нужно объединить эти два регулярных выражения, так что если какой-либо вход, который отрицает ожидаемые форматы 1 & 2, приведет к сбою скрипта