How to tell if a string contains a certain character in JavaScript?
我有一个带有文本框的页面,用户应该在其中输入24个字符(字母和数字,不区分大小写)的注册代码。我使用
注册码通常以用破折号分隔的字符组的形式给出,但我希望用户输入不带破折号的代码。
我如何在不使用jquery的情况下编写我的javascript代码,以检查用户输入的给定字符串是否不包含破折号,或者更好的方法是只包含字母数字字符?
在
1 2 3 4 | if (your_string.indexOf('hello') > -1) { alert("hello found inside your_string"); } |
对于字母数字,可以使用正则表达式:
http://www.regular-expressions.info/javascript.html
字母数字正则表达式
带有ES6.includes()。
1 2 3 4 5 | "FooBar".includes("oo"); // true "FooBar".includes("foo"); // false "FooBar".includes("oo", 2); // false |
E:不受IE支持-相反,您可以将tilde opperator
1 2 3 4 5 | ~"FooBar".indexOf("oo"); // -2 -> true ~"FooBar".indexOf("foo"); // 0 -> false ~"FooBar".indexOf("oo", 2); // 0 -> false |
与数字一起使用时,tilde运算符effective执行
1 2 3 4 5 | !!~"FooBar".indexOf("oo"); // true !!~"FooBar".indexOf("foo"); // false !!~"FooBar".indexOf("oo", 2); // false |
如果变量
1 2 3 | if (! /^[a-zA-Z0-9]+$/.test(foo)) { // Validation failed } |
这将测试并确保用户至少输入了一个字符,并且只输入了字母数字字符。
检查字符串(单词/句子…)是否包含特定的单词/字符
1 | if ("write something here".indexOf("write som") > -1 ) { alert("found it" ); } |
ES6在字符串的
1 2 3 | var str = 'To be, or not to be, that is the question.'; console.log(str.includes('To be')); |
以下polyfill可用于在不受支持的浏览器中添加此方法。(源)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } }; } |
使用正则表达式来完成此操作。
1 2 3 | function isAlphanumeric( str ) { return /^[0-9a-zA-Z]+$/.test(str); } |
你们都想得太辛苦了。只需使用一个简单的正则表达式,它就是你最好的朋友。
1 2 3 4 5 6 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分钟内学会regex?
1 2 3 4 5 6 7 8 | var inputString ="this is home"; var findme ="home"; if ( inputString.indexOf(findme) > -1 ) { alert("found it" ); } else { alert("not found" ); } |
凯文斯的答案是正确的,但它需要一个"魔法"数字,如下所示:
1 | var containsChar = s.indexOf(somechar) !== -1; |
在这种情况下,你需要知道-1代表找不到。我认为更好的版本是:
1 | var containsChar = s.indexOf(somechar) >= 0; |
仅测试字母数字字符:
1 2 3 4 5 6 7 8 | if (/^[0-9A-Za-z]+$/.test(yourString)) { //there are only alphanumeric characters } else { //it contains other characters } |
regex正在测试字符集0-9、a-z和a-z中的1个或多个(+),从输入(^)的开头开始,到输入($)的结尾停止。
如果要在字符串的开头或结尾搜索字符,还可以使用
1 2 3 | const country ="pakistan"; country.startsWith('p'); // true country.endsWith('n'); // true |
字符串的搜索函数也很有用。它搜索给定字符串中的字符和子字符串。
试试这个:
1 2 3 4 | 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读取数据,例如p或h1标记,那么您将需要使用两个本机javascript函数,它非常简单,但仅限于es6,至少对于我将要提供的解决方案而言。我将搜索dom中的所有p标记,如果文本包含一个"t",整个段落将被删除。我希望这个小例子能帮助别人!
HTML
1 2 3 4 5 6 7 8 9 | <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
1 2 3 4 5 6 7 | let paras = document.querySelectorAll('p'); paras.forEach(p => { if(p.textContent.includes('T')){ p.remove(); } }); |
工作得很好。这个例子有很大帮助。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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); } } <body> My form <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> |