如何判断字符串是否包含JavaScript中的某个字符?

时间:2010-12-14 21:35:13

标签: javascript string

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

注册码通常以短划线分隔的字符组给出,但我希望用户输入不带短划线的代码。

如何在没有jQuery的情况下编写我的JavaScript代码来检查用户输入的给定字符串是否包含破折号,或者更好的是,只包含字母数字字符?

19 个答案:

答案 0 :(得分:529)

your_string

中找到“你好”
if (your_string.indexOf('hello') > -1)
{
  alert("hello found inside your_string");
}

对于字母数字,您可以使用正则表达式:

http://www.regular-expressions.info/javascript.html

Alpha Numeric Regular Expression

答案 1 :(得分:47)

使用ES6 .includes()

"FooBar".includes("oo"); // true

"FooBar".includes("foo"); // false

"FooBar".includes("oo", 2); // false

E:未被IE支持 - 相反,您可以使用Tilde操作符~Bitwise NOT)和.indexOf()

~"FooBar".indexOf("oo"); // -2 -> true

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

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

与数字一起使用,Tilde运算符有效 ~N => -(N+1)。使用双重否定!!Logical NOT)来转换bools中的数字:

!!~"FooBar".indexOf("oo"); // true

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

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

答案 2 :(得分:43)

如果您有变量foo中的文字:

if (! /^[a-zA-Z0-9]+$/.test(foo)) {
    // Validation failed
}

这将测试并确保用户输入了至少一个字符,并且只输入了 字母数字字符。

答案 3 :(得分:17)

检查字符串(单词/句子......)是否包含特定的单词/字符

if ( "write something here".indexOf("write som") > -1 )  { alert( "found it" );  } 

答案 4 :(得分:7)

ES6 在String的prototype中包含内置方法(includes),可用于检查字符串是否包含其他字符串。

var str = 'To be, or not to be, that is the question.';

console.log(str.includes('To be')); 

以下polyfill可用于在不支持的浏览器中添加此方法。 (Source

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;
    }
  };
}

答案 5 :(得分:6)

使用正则表达式来完成此任务。

function isAlphanumeric( str ) {
 return /^[0-9a-zA-Z]+$/.test(str);
}

答案 6 :(得分:5)

你们都在想太多。只需使用简单的正则表达式,它就是你最好的朋友。

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

Learn Regex in 5 minutes?

答案 7 :(得分:4)

var inputString = "this is home";
var findme = "home";

if ( inputString.indexOf(findme) > -1 ) {
    alert( "found it" );
} else {
    alert( "not found" );
}

答案 8 :(得分:3)

仅测试字母数字字符:

if (/^[0-9A-Za-z]+$/.test(yourString))
{
    //there are only alphanumeric characters
}
else
{
    //it contains other characters
}

正则表达式测试0-9,AZ和az字符集中的1个或多个(+),从输入(^)的开头开始,然后以输入结束($)结束。

答案 9 :(得分:3)

凯文斯的答案是正确的,但它需要一个“神奇”的数字如下:

var containsChar = s.indexOf(somechar) !== -1;

在这种情况下,你需要知道 -1 代表 not found 。 我认为更好的版本是:

var containsChar = s.indexOf(somechar) >= 0;

答案 10 :(得分:2)

String的搜索功能也很有用。它搜索给定字符串中的字符和子字符串。

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

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

答案 11 :(得分:2)

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

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

答案 12 :(得分:2)

试试这个:

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/

答案 13 :(得分:1)

例如,如果您要从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();
    } 
});

答案 14 :(得分:0)

完美地工作。这个例子很有帮助。

<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>

答案 15 :(得分:0)

演示:include()方法在整个字符串中查找“包含”字符,它将返回true。

var string = "This is a tutsmake.com and this tutorial contains javascript include() method examples."

str.includes("contains");

//The output of this

  true

答案 16 :(得分:0)

检查字符串是字母数字还是字母数字+一些允许的字符

最快的字母数字方法可能在Best way to alphanumeric check in Javascript中提到,因为它直接在数字范围内操作。

然后,为了合理地允许其他一些额外的字符,我们可以将它们放在in a Set中以进行快速查找。

我相信此实现将正确处理surrogate pairs correctly

#!/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('你好'));

GitHub upstream

在Node.js v10.15.1。中进行了测试

答案 17 :(得分:0)

这对我有用!

属性包含选择器 [name*=”value”]

这是与值匹配的最慷慨的 jQuery 属性选择器。如果选择器的字符串出现在元素属性值中的任何位置,它将选择一个元素。将此选择器与 Attribute Contains Word 选择器(例如 [attr~="word"])进行比较,后者在许多情况下更合适。

来源:属性包含选择器 [name*=”value”] => https://api.jquery.com/attribute-contains-selector/

 <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>attributeContains demo</title>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<input name="man-news">
<input name="milkman">
<input name="letterman2">
<input name="newmilk">
 
<script>
$( "input[name*='man']" ).val( "has man in it!" );
</script>
 
</body>
</html>

答案 18 :(得分:0)

一个示例正则表达式模式测试,可用于确定字符串是否包含字符“@”:

/(@[A-Za-z])\w+/.test(str_text)