我有一个带有文本框的页面,用户应该在其中输入 24 个字符(字母和数字,不区分大小写)的注册码。我曾经maxlength
限制用户输入 24 个字符。
注册码通常以用破折号分隔的字符组的形式给出,但我希望用户输入不带破折号的代码。
如何在没有 jQuery 的情况下编写 JavaScript 代码来检查用户输入的给定字符串是否不包含破折号,或者更好的是,只包含字母数字字符?
我有一个带有文本框的页面,用户应该在其中输入 24 个字符(字母和数字,不区分大小写)的注册码。我曾经maxlength
限制用户输入 24 个字符。
注册码通常以用破折号分隔的字符组的形式给出,但我希望用户输入不带破折号的代码。
如何在没有 jQuery 的情况下编写 JavaScript 代码来检查用户输入的给定字符串是否不包含破折号,或者更好的是,只包含字母数字字符?
找到“你好” your_string
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
对于字母数字,您可以使用正则表达式:
使用 ES6 MDN 文档 .includes()
"FooBar".includes("oo"); // true
"FooBar".includes("foo"); // false
"FooBar".includes("oo", 2); // false
E:IE 不支持 - 相反,您可以将波浪号运算符~
(按位非)与.indexOf() 一起使用
~"FooBar".indexOf("oo"); // -2 -> true
~"FooBar".indexOf("foo"); // 0 -> false
~"FooBar".indexOf("oo", 2); // 0 -> false
与数字一起使用时,波浪号运算符有效
~N => -(N+1)
。将它与双重否定!!
(Logical NOT)一起使用以转换 bools 中的数字:
!!~"FooBar".indexOf("oo"); // true
!!~"FooBar".indexOf("foo"); // false
!!~"FooBar".indexOf("oo", 2); // false
如果您在变量中有文本foo
:
if (! /^[a-zA-Z0-9]+$/.test(foo)) {
// Validation failed
}
这将测试并确保用户至少输入了一个字符,并且只输入了字母数字字符。
检查 string(word/sentence...) 是否包含特定的单词/字符
if ( "write something here".indexOf("write som") > -1 ) { alert( "found it" ); }
ES6includes
在 String's 中包含内置方法 ( ) prototype
,可用于检查字符串是否包含另一个字符串。
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be'));
以下 polyfill 可用于在不支持的浏览器中添加此方法。(来源)
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}