我有一个带有文本框的页面,用户应在其中输入24个字符(字母和数字,不区分大小写)的注册码。我曾经maxlength
限制用户输入24个字符。
注册代码通常以破折号分隔的字符组形式给出,但我希望用户输入不带破折号的代码。
如何在没有jQuery的情况下编写我的JavaScript代码,以检查用户输入的给定字符串不包含破折号,或者更好的是,仅包含字母数字字符?
inArray
。
我有一个带有文本框的页面,用户应在其中输入24个字符(字母和数字,不区分大小写)的注册码。我曾经maxlength
限制用户输入24个字符。
注册代码通常以破折号分隔的字符组形式给出,但我希望用户输入不带破折号的代码。
如何在没有jQuery的情况下编写我的JavaScript代码,以检查用户输入的给定字符串不包含破折号,或者更好的是,仅包含字母数字字符?
inArray
。
Answers:
在中找到“你好” your_string
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
对于字母数字,可以使用正则表达式:
/hello/g.test(your_string)
。虽然indexOf有效,但我认为正则表达式测试可以更好地说明您要完成的工作。如果我试图在字符串中查找字符序列,则索引是不相关的。
使用ES6 .includes()
"FooBar".includes("oo"); // true
"FooBar".includes("foo"); // false
"FooBar".includes("oo", 2); // false
E:不被IE支持-相反,您可以将Tilde运算符~
(按位NOT)与.indexOf()一起使用
~"FooBar".indexOf("oo"); // -2 -> true
~"FooBar".indexOf("foo"); // 0 -> false
~"FooBar".indexOf("oo", 2); // 0 -> false
与数字一起使用,Tilde运算符有效
~N => -(N+1)
。将它与双重否定符!!
(逻辑非)一起使用来转换布尔值:
!!~"FooBar".indexOf("oo"); // true
!!~"FooBar".indexOf("foo"); // false
!!~"FooBar".indexOf("oo", 2); // false
检查字符串(单词/句子...)是否包含特定的单词/字符
if ( "write something here".indexOf("write som") > -1 ) { alert( "found it" ); }
ES6includes
在String的中包含内置方法()prototype
,可用于检查string是否包含另一个字符串。
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;
}
};
}
使用正则表达式可以完成此任务。
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
if ( string1.test(regex) ) { alert("He likes pizza!"); }
var regex = /^[a-z0-9]+$/i
regex.test(string1)
regex.test(str)
。(str.match(regex)
类似,但不返回布尔值。)
如果要在字符串的开头或结尾搜索字符,还可以使用startsWith
和endsWith
const country = "pakistan";
country.startsWith('p'); // true
country.endsWith('n'); // true
var inputString = "this is home";
var findme = "home";
if ( inputString.indexOf(findme) > -1 ) {
alert( "found it" );
} else {
alert( "not found" );
}
凯文斯的回答是正确的,但它需要一个“魔术”数字,如下所示:
var containsChar = s.indexOf(somechar) !== -1;
在这种情况下,您需要知道-1代表未找到。我认为更好的版本是:
var containsChar = s.indexOf(somechar) >= 0;
尝试这个:
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/
例如,如果您要从DOM中读取诸如ap或h1标签之类的数据,则将要使用两个本机JavaScript函数,这很简单,但仅限于es6,至少对于我要提供的解决方案而言。我将搜索DOM中的所有p标签,如果文本包含“ 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>
检查字符串是字母数字还是字母数字+一些允许的字符
最快的字母数字方法可能如下所述:Java语言中字母数字检查的最佳方法因为它直接在数字范围内运行。
然后,为了合理地允许其他一些字符,我们可以将它们放在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。中测试。