Почему RegExp test() не срабатывает для строки, похожей на IPv6? [дубликат]

143
31 июля 2021, 14:40
На этот вопрос уже дан ответ здесь:
Как создать регулярное выражение не по паттерну , а по строке? (1 ответ)
Закрыт 1 год назад.

Вот такой простенький пример:

var a = new RegExp('/[301:42df:240b:ecde:4b05:e3f2:ad73:cd34]:81'); 
testinput(a, 'http://[301:42df:240b:ecde:4b05:e3f2:ad73:cd34]:81/'); 
 
function testinput(re, str) { 
  var midstring; 
  if (re.test(str)) { 
    midstring = ' содержит '; 
  } else { 
    midstring = ' не содержит '; 
  } 
  console.log(str + midstring + re.source); 
  //WScript.echo(str + midstring + re.source); 
}

Предполагается, что будет выведено такое сообщение:

http://[301:42df:240b:ecde:4b05:e3f2:ad73:cd34]:81/ содержит /[301:42df:240b:ecde:4b05:e3f2:ad73:cd34]:81

Но выводится "не содержит". Почему? Как поправить, чтобы срабатывало правильно?

Answer 1

Проблема, видимо, в неправильном шаблоне регулярного выражения. Переписал с использованием indexOf - это проще и работает так, как нужно.

READ ALSO
Ya.share2 и динамические материалы

Ya.share2 и динамические материалы

Поделиться от Яндекса не работает на материалы добавленные динамически (ajax)Кнопки просто не отображаются в новых материалах

104
Умножить все значения с одни классом jquery

Умножить все значения с одни классом jquery

Подскажите пожалуйста, как умножить все значения span с определенным классом?

93
Как правильно вывести текст заголовка элемента?

Как правильно вывести текст заголовка элемента?

Мне нужно для каждого элемента liitem в списке ul

98