Как проверить, что определенный символ находится внутри двух выделенных символов в javascript? - PullRequest
3 голосов
/ 24 января 2020

Предположим, что целевой символ, который нам нужен, - $ , и нам нужно проверить, находится ли он между двумя ' & ' . Код будет выглядеть примерно так:

var str = " Verify '$' "
var str2 = " Let's see if ' The $ is inside ! ' "
var str3 = " I got $ "
console.log(verify(str)) //=> true
console.log(verify(str2)) //=> true
console.log(verify(str3)) //=> false

Javascript String.prototype.include () , может использоваться для проверки, существует ли $ в строка, но я не понимаю, как проверить, находится ли она внутри ' & ' ?

Ответы [ 3 ]

3 голосов
/ 24 января 2020

Вы можете искать $, завернутый в '.

const check = string => /'.*\$.*'/.test(string);

console.log([
    " Verify '$' ",
    " Let's see if ' The $ is inside ! ' ",
    " I got $ "].map(check)
);
1 голос
/ 24 января 2020

Довольно сложно проверить, действительно ли $ находится между двумя ', а не между парой ' a ' и ' b 'b. Поэтому я бы порекомендовал перебирать строку и переключать логическое значение всякий раз, когда вы видите цитату. Если вы найдете $, когда логическое значение равно true, проверьте, есть ли ' в остальной части текста;

console.log(verify("'$'")) //=> true
console.log(verify("'   $   '")) //=> true
console.log(verify("'a'   $ '")) //=> false
console.log(verify("   '   $ ")) //=> false

function verify(text) {
  var openQuotes = false;
  for (var index = 0; index < text.length; index++) {
    if (text[index] === "'") openQuotes = !openQuotes;
    else if (text[index] === "$" && openQuotes && text.indexOf("'", index) !== -1) return true;
  }
  return false;
}
1 голос
/ 24 января 2020

Это можно сделать с помощью регулярных выражений:

function verify(input)
{
  const regex = RegExp(/'.*?\$.*?'/);
  return regex.test(input);
}

var str = " Verify '$' "
var str2 = " Let's see if ' The $ is inside ! ' "
var str3 = " I got $ "
console.log(verify(str)) //=> true
console.log(verify(str2)) //=> true
console.log(verify(str3)) //=> false

/'.*?\$.*?'/ описание шаблона:

' соответствует символу ' буквально (с учетом регистра)

.*? соответствует любому символу (кроме ограничителей строки)

*? Квантор - соответствует от нуля до неограниченного числа раз , как можно меньше раз, расширяясь по мере необходимости (ленивый)

\$ соответствует символу $ буквально (с учетом регистра)

.*? соответствует любому символу (кроме ограничителей строки)

*? Квантор - соответствует нулю и неограниченное число раз , как можно меньше раз, расширяясь по мере необходимости (ленивый)

' соответствует символу ' буквально (с учетом регистра)

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