我有一个页面上有一个文本框,用户应该输入一个由24个字符组成(字母和数字,大小写不敏感)的注册码。我使用maxlength
属性限制用户输入24个字符。
注册码通常是由一组由破折号分隔的字符组成的,但我希望用户在输入代码时不要输入破折号。
如何编写JavaScript代码(不使用jQuery),以检查用户输入的字符串中不含有破折号或更好地说只包含字母数字字符?
我有一个页面上有一个文本框,用户应该输入一个由24个字符组成(字母和数字,大小写不敏感)的注册码。我使用maxlength
属性限制用户输入24个字符。
注册码通常是由一组由破折号分隔的字符组成的,但我希望用户在输入代码时不要输入破折号。
如何编写JavaScript代码(不使用jQuery),以检查用户输入的字符串中不含有破折号或更好地说只包含字母数字字符?
在 your_string
中查找 "hello"
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
对于字母数字组合,您可以使用正则表达式:
/hello/g.test(your_string)
。虽然indexOf也可以用,但是我认为正则表达式测试更能清楚地说明你想要实现的目标。如果我想在一个字符串中查找一系列字符,那么索引是无关紧要的。 - Joe Maffei使用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)
。将其与双重否定!!
(逻辑非)一起使用,可以将数字转换为布尔值:
!!~"FooBar".indexOf("oo"); // true
!!~"FooBar".indexOf("foo"); // false
!!~"FooBar".indexOf("oo", 2); // false
includes
的第二个参数是 position
,默认值为 0。 - Timo如果您有存储在变量foo
中的文本:
if (! /^[a-zA-Z0-9]+$/.test(foo)) {
// Validation failed
}
这将测试并确保用户输入了至少一个字符,并且仅输入了字母或数字。
检查字符串(单词/句子...)是否包含特定的单词/字符
if ( "write something here".indexOf("write som") > -1 ) { alert( "found it" ); }
ES6 包含在 String 的 prototype
中的内置方法 (includes
),可用于检查字符串是否包含另一个字符串。
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;
}
};
}
你们想得太复杂了。只需使用简单的正则表达式,它就是你最好的朋友。
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
if ( string1.test(regex) ) { alert("他喜欢披萨!"); }
- Adam McArthurvar regex = /^[a-z0-9]+$/i
- Adam McArthurregex.test(string1)
- Artem Pregex.test(str)
。(str.match(regex)
类似,但不返回布尔值。) - jsejcksn使用正则表达式来完成这个任务。
function isAlphanumeric( str ) {
return /^[0-9a-zA-Z]+$/.test(str);
}
var inputString = "this is home";
var findme = "home";
if ( inputString.indexOf(findme) > -1 ) {
alert( "found it" );
} else {
alert( "not found" );
}
如果您想要在字符串的开头或结尾搜索字符,您可以使用startsWith
和endsWith
方法。
const country = "pakistan";
country.startsWith('p'); // true
country.endsWith('n'); // true
inArray
。 - JonH