如何判断一个字符串在javascript中是否包含某个字符?

How to tell if a string contains a certain character in JavaScript?

我有一个带有文本框的页面,用户应该在其中输入24个字符(字母和数字,不区分大小写)的注册代码。我使用maxlength来限制用户输入24个字符。

注册码通常以用破折号分隔的字符组的形式给出,但我希望用户输入不带破折号的代码。

我如何在不使用jquery的情况下编写我的javascript代码,以检查用户输入的给定字符串是否不包含破折号,或者更好的方法是只包含字母数字字符?


your_string中找到"你好"

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 ~(按位不)与.indexof()一起使用。

1
2
3
4
5
~"FooBar".indexOf("oo"); // -2 -> true

~"FooBar".indexOf("foo"); // 0 -> false

~"FooBar".indexOf("oo", 2); // 0 -> false

与数字一起使用时,tilde运算符effective执行~N => -(N+1)。使用带双负号的!!(逻辑非)来转换bools中的数字:

1
2
3
4
5
!!~"FooBar".indexOf("oo"); // true

!!~"FooBar".indexOf("foo"); // false

!!~"FooBar".indexOf("oo", 2); // false


如果变量foo中有文本:

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在字符串的prototype中包含内置方法(includes),可以用来检查字符串是否包含另一个字符串。

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个或多个(+),从输入(^)的开头开始,到输入($)的结尾停止。


如果要在字符串的开头或结尾搜索字符,还可以使用startsWithendsWith

1
2
3
const country ="pakistan";
country.startsWith('p'); // true
country.endsWith('n');  // true


字符串的搜索函数也很有用。它搜索给定字符串中的字符和子字符串。

'apple'.search('pl')返回2

'apple'.search('x')返回-1


试试这个:

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>