Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка строки на соответствие регулярному выражению (https://javascript.ru/forum/misc/74956-proverka-stroki-na-sootvetstvie-regulyarnomu-vyrazheniyu.html)

WGN 20.08.2018 18:49

Проверка строки на соответствие регулярному выражению
 
Есть список строк которые нужно проверить регулярным выражением на валидность.
Строка следующего типа: Ab1 @any_text.text instagram.com/anylink
Она состоит из 3-ех частей, между ними может быть сколько угодно пробелов и/или пропусков строк(enter).

Первый элемент всегда должен содержать значение Ab1.
Второй элемент всегда должен начинаться с символа @ и сразу за ним(без пробела) слово которое может состоять из латинских букв, цифр и символов _ и .
Пример:@sample.text или @sample2_textили @sample3_text.text2.
Третий элемент это ссылка на инстаграм, она может содержать https:// а может и не содержать, но обязательно надо проверить чтобы присутствовало instagram.com/ и после этого не пустота.
Я пишу на PHP и мне нужно регулярное выражение которым можно проверить на валидность строку которую я описал выше.

Malleys 20.08.2018 19:10

PHPЗапустить
<?php
$string = "Ab1 @any_text.text https://instagram.com/anylink";

if(preg_match('/^\s*Ab1\s+@[\w.]+\s+(?:https?\:\/\/|)instagram\.com\/[^\s]+\s*$/m', $string)) {
    echo 'ok';
}


JS
var string = "Ab1 @any_text.text https://instagram.com/anylink";

if(/^\s*Ab1\s+@[\w.]+\s+(?:https?\:\/\/|)instagram\.com\/[^\s]+\s*$/m.test(string)) {
    alert("ok");
}

рони 20.08.2018 19:19

WGN,
function fn(str)
  {  var reg = [/Ab1/, /^@[\w\.]+$/, /^(https?:\/\/)?instagram\.com\/\S+$/];
     str = str.trim().split(/\s+/);
     return str.length == 3 && str.every(function(s,i) {
     return reg[i].test(s)
     })
  }
 var str = 'Ab1 @any_text.text instagram.com/anylink';
 var ok = fn(str);
 alert(ok); //true
 str = 'Ab1 @any_text.text instagram.com/';
 ok = fn(str);
 alert(ok); //false
  str = 'Ab1 @sample3_text.text2. instagram.com/12345';
 ok = fn(str);
 alert(ok); //true


Часовой пояс GMT +3, время: 15:47.