Как определить, содержит ли строка определенный символ в JavaScript?

У меня есть страница с текстовым полем, в которой пользователь должен ввести регистрационный код 24 символа (буквы и цифры, регистр без учета регистра). Я использовал maxlength, чтобы ограничить пользователя введением 24 символов.

Регистрационные коды обычно указываются как группы символов, разделенные тире, но я хотел бы, чтобы пользователь вводил коды без дефиса.

Как я могу написать свой код JavaScript без jQuery, чтобы проверить, что заданная строка, в которой пользовательские входы не содержит тире, или еще лучше, содержит только буквенно-цифровые символы?

Ответ 2

С ES6 .include()

"FooBar".includes("oo"); // true

"FooBar".includes("foo"); // false

"FooBar".includes("oo", 2); // false

E: Не поддерживается IE - вместо этого вы можете использовать оператор Tilde ~ (Bitwise NOT) с .indexOf()

~"FooBar".indexOf("oo"); // -2 -> true

~"FooBar".indexOf("foo"); // 0 -> false

~"FooBar".indexOf("oo", 2); // 0 -> false

При использовании с числом эффективный оператор Тильды имеет значение ~N => -(N+1). Используйте это с двойным отрицанием !! (Логически НЕ) для преобразования чисел в bools:

!!~"FooBar".indexOf("oo"); // true

!!~"FooBar".indexOf("foo"); // false

!!~"FooBar".indexOf("oo", 2); // false

Ответ 3

Если у вас есть текст в переменной foo:

if (! /^[a-zA-Z0-9]+$/.test(foo)) {
    // Validation failed
}

Это проверит и убедитесь, что пользователь ввел хотя бы один символ и ввел только буквенно-цифровые символы.

Ответ 4

проверьте, содержит ли строка (слово/предложение...) определенное слово/символ

if ( "write something here".indexOf("write som") > -1 )  { alert( "found it" );  } 

Ответ 5

ES6 содержит встроенный метод ( includes в includes) в prototype String, который можно использовать для проверки, содержит ли строка другую строку или нет.

var str = 'To be, or not to be, that is the question.';

console.log(str.includes('To be')); 

Ответ 6

Используйте регулярное выражение для выполнения этого.

function isAlphanumeric( str ) {
 return /^[0-9a-zA-Z]+$/.test(str);
}

Ответ 7

Вы все слишком усердно думаете. Просто используйте простое регулярное выражение, это ваш лучший друг.

var string1 = "Hi Stack Overflow. I like to eat pizza."
var string2 = "Damn, I fail."

var regex = /(pizza)/g // Insert whatever phrase or character you want to find

string1.test(regex); // => true
string2.test(regex); // => false

Выучите регулярные выражения за 5 минут?

Ответ 8

var inputString = "this is home";
var findme = "home";

if ( inputString.indexOf(findme) > -1 ) {
    alert( "found it" );
} else {
    alert( "not found" );
}

Ответ 9

Для проверки только буквенно-цифровых символов:

if (/^[0-9A-Za-z]+$/.test(yourString))
{
    //there are only alphanumeric characters
}
else
{
    //it contains other characters
}

Регулярное выражение проверяет для 1 или более (+) набор символов 0-9, AZ и az, начиная с начала ввода (^) и останавливаясь с окончанием ввода ($).

Ответ 10

Ответ Кевинса правильный, но для него требуется "магическое" число:

var containsChar = s.indexOf(somechar) !== -1;

В этом случае вам нужно знать, что -1 означает "не найден". Я думаю, что немного лучшая версия будет:

var containsChar = s.indexOf(somechar) >= 0;

Ответ 11

Если вы ищете символ в начале или в конце строки, вы также можете использовать startsWith и endsWith

const country = "pakistan";
country.startsWith('p'); // true
country.endsWith('n');  // true

Ответ 12

Попробуйте следующее:

if ('Hello, World!'.indexOf('orl') !== -1)
    alert("The string 'Hello World' contains the substring 'orl'!");
else
    alert("The string 'Hello World' does not contain the substring 'orl'!");

Вот пример: http://jsfiddle.net/oliverni/cb8xw/

Ответ 13

Функция поиска строк также полезна. Он ищет символ, а также строку sub_string в заданной строке.

'apple'.search('pl') возвращает 2

'apple'.search('x') return -1

Ответ 14

Если вы читаете данные из DOM, такие как, например, тег ap или h1, вам нужно использовать две встроенные функции JavaScript, это довольно просто, но ограничено es6, по крайней мере, для решения, которое я собираюсь предоставить. Я буду искать все теги p в DOM, если текст содержит букву "T", весь абзац будет удален. Я надеюсь, что этот маленький пример поможет кому-то!

HTML

<p>Text you need to read one</p>
<p>Text you need to read two</p>
<p>Text you need to read three</p>

JS

let paras = document.querySelectorAll('p');

paras.forEach(p => {
  if(p.textContent.includes('T')){
       p.remove();
    } 
});

Ответ 15

Работает отлично. Эта экспансия поможет много.

<script>    
    function check()
    {
       var val = frm1.uname.value;
       //alert(val);
       if (val.indexOf("@") > 0)
       {
          alert ("email");
          document.getElementById('isEmail1').value = true;
          //alert( document.getElementById('isEmail1').value);
       }else {
          alert("usernam");
          document.getElementById('isEmail1').value = false;
          //alert( document.getElementById('isEmail1').value);
       }
    }
</script>

<body>
    <h1>My form </h1>
    <form action="v1.0/user/login" method="post" id = "frm1">
        <p>
            UserName : <input type="text" id = "uname" name="username" />
        </p>
        <p>
            Password : <input type="text" name="password" />
        </p>
        <p>
            <input type="hidden" class="email" id = "isEmail1" name = "isEmail"/>
        </p>
        <input type="submit" id = "submit" value="Add User" onclick="return check();"/>
    </form>
</body>

Ответ 16

Демонстрация: метод include() находит символ "содержит" во всей строке и возвращает true.

var string = "This is a tutsmake.com and this tutorial contains javascript include() method examples."

str.includes("contains");

//The output of this

  true

Ответ 17

Проверьте, является ли строка буквенно-цифровой или буквенно-цифровой + некоторые допустимые символы

Вероятно, самый быстрый буквенно-цифровой метод, как указано в: Лучший способ буквенно-цифровой проверки в Javascript, так как он работает непосредственно с диапазонами номеров.

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

Я считаю, что эта реализация будет корректно работать с суррогатными парами.

#!/usr/bin/env node

const assert = require('assert');

const char_is_alphanumeric = function(c) {
  let code = c.codePointAt(0);
  return (
    // 0-9
    (code > 47 && code < 58) ||
    // A-Z
    (code > 64 && code < 91) ||
    // a-z
    (code > 96 && code < 123)
  )
}

const is_alphanumeric = function (str) {
  for (let c of str) {
    if (!char_is_alphanumeric(c)) {
      return false;
    }
  }
  return true;
};

// Arbitrarily defined as alphanumeric or '-' or '_'.
const is_almost_alphanumeric = function (str) {
  for (let c of str) {
    if (
      !char_is_alphanumeric(c) &&
      !is_almost_alphanumeric.almost_chars.has(c)
    ) {
      return false;
    }
  }
  return true;
};
is_almost_alphanumeric.almost_chars = new Set(['-', '_']);

assert( is_alphanumeric('aB0'));
assert(!is_alphanumeric('aB0_-'));
assert(!is_alphanumeric('aB0_-*'));
assert(!is_alphanumeric('你好'));

assert( is_almost_alphanumeric('aB0'));
assert( is_almost_alphanumeric('aB0_-'));
assert(!is_almost_alphanumeric('aB0_-*'));
assert(!is_almost_alphanumeric('你好'));

GitHub upstream.

Протестировано в Node.js v10.15.1.

Ответ 18

  var emailID=document.getElementById("emailField").value;
  if(!emailID.contains("@"))
    {
      alert("Wrong EmailID");
    }