Сопоставление введенного пользователем ввода с регулярным выражением и обрезка неверных входных данных для соответствия регулярному выражению - PullRequest
0 голосов
/ 24 января 2019

У меня есть регулярное выражение: /^PVER : [a-z|A-Z|0-9|_]* [/] [a-z|A-Z|0-9|_]* ; 0$/

давайте рассмотрим, например, что "PVER : abc / def ; 0" является допустимым вводом.

Если введен ввод: " PVER : abc //// def ; 0"
Как мне преобразовать этот ввод, чтобы сделать его действительным, как в первом примере?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Чтобы превратить вторую строку в первую, вы можете заменить несколько 2 или более пробельных символов или косую черту на одну.Затем обрежьте строку, чтобы удалить начальный пробел.

let str = " PVER     :  abc  //// def   ; 0";
let res = str.trim()
    .replace(/\s{2,}/g, ' ')
    .replace(/\/{2,}/, '/');
console.log(res);

Вместо изменения входа вы можете обновить регулярное выражение.Этот шаблон [a-z|A-Z|0-9|_] является классом символов, который будет соответствовать одному из многих перечисленных.Если вы не хотите сопоставлять канал |, вы можете написать его как \w.

Во втором примере вы должны найти один или несколько раз пробел (или, возможно, табуляцию), для котороговы можете использовать [ \t] или \s, чтобы сопоставить символ пробела, и один или несколько раз использовать косую черту для получения совпадения.

Используя квантификаторы , вы можете обновить свое регулярное выражение до:

^\s*PVER\s*:\s*\w+\s+\/+\s*\w+\s+;\s+0$

Regex demo

[
  "PVER : abc / def ; 0",
  " PVER     :  abc  //// def   ; 0",
  "test"
].forEach(s => {
  console.log(s + " =>> " + /^\s*PVER\s*:\s*\w+\s+\/+\s*\w+\s+;\s+0$/.test(s));
});
0 голосов
/ 24 января 2019

Используйте это регулярное выражение, чтобы найти несколько последовательных вхождений / и заменить его только одним /

const res = " PVER : abc //// def ; 0".replace(/(\/)\1+/g, "/");

console.log(res);

Или вы можете изменить исходное регулярное выражение, чтобы оно также совпадало с несколькими последовательными вхождениями /

const res = "PVER : abc //// def ; 0".match(/^PVER : [a-z|A-Z|0-9|_]* [/]+ [a-z|A-Z|0-9|_]* ; 0$/g);

console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...