Ответ 1
Чтобы найти "привет" в your_string
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
Для алфавитного числа вы можете использовать регулярное выражение:
У меня есть страница с текстовым полем, в которой пользователь должен ввести регистрационный код 24 символа (буквы и цифры, регистр без учета регистра). Я использовал maxlength
, чтобы ограничить пользователя введением 24 символов.
Регистрационные коды обычно указываются как группы символов, разделенные тире, но я хотел бы, чтобы пользователь вводил коды без дефиса.
Как я могу написать свой код JavaScript без jQuery, чтобы проверить, что заданная строка, в которой пользовательские входы не содержит тире, или еще лучше, содержит только буквенно-цифровые символы?
Чтобы найти "привет" в your_string
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
Для алфавитного числа вы можете использовать регулярное выражение:
С 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
Если у вас есть текст в переменной foo
:
if (! /^[a-zA-Z0-9]+$/.test(foo)) {
// Validation failed
}
Это проверит и убедитесь, что пользователь ввел хотя бы один символ и ввел только буквенно-цифровые символы.
проверьте, содержит ли строка (слово/предложение...) определенное слово/символ
if ( "write something here".indexOf("write som") > -1 ) { alert( "found it" ); }
ES6 содержит встроенный метод ( includes
в includes
) в prototype
String, который можно использовать для проверки, содержит ли строка другую строку или нет.
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be'));
Используйте регулярное выражение для выполнения этого.
function isAlphanumeric( str ) {
return /^[0-9a-zA-Z]+$/.test(str);
}
Вы все слишком усердно думаете. Просто используйте простое регулярное выражение, это ваш лучший друг.
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
var inputString = "this is home";
var findme = "home";
if ( inputString.indexOf(findme) > -1 ) {
alert( "found it" );
} else {
alert( "not found" );
}
Для проверки только буквенно-цифровых символов:
if (/^[0-9A-Za-z]+$/.test(yourString))
{
//there are only alphanumeric characters
}
else
{
//it contains other characters
}
Регулярное выражение проверяет для 1 или более (+) набор символов 0-9, AZ и az, начиная с начала ввода (^) и останавливаясь с окончанием ввода ($).
Ответ Кевинса правильный, но для него требуется "магическое" число:
var containsChar = s.indexOf(somechar) !== -1;
В этом случае вам нужно знать, что -1 означает "не найден". Я думаю, что немного лучшая версия будет:
var containsChar = s.indexOf(somechar) >= 0;
Если вы ищете символ в начале или в конце строки, вы также можете использовать startsWith
и endsWith
const country = "pakistan";
country.startsWith('p'); // true
country.endsWith('n'); // true
Попробуйте следующее:
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/
Функция поиска строк также полезна. Он ищет символ, а также строку sub_string в заданной строке.
'apple'.search('pl')
возвращает 2
'apple'.search('x')
return -1
Если вы читаете данные из 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();
}
});
Работает отлично. Эта экспансия поможет много.
<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>
Демонстрация: метод 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
Проверьте, является ли строка буквенно-цифровой или буквенно-цифровой + некоторые допустимые символы
Вероятно, самый быстрый буквенно-цифровой метод, как указано в: Лучший способ буквенно-цифровой проверки в 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('你好'));
Протестировано в Node.js v10.15.1.
var emailID=document.getElementById("emailField").value;
if(!emailID.contains("@"))
{
alert("Wrong EmailID");
}