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

IT技术 javascript string
2021-01-31 12:21:12

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

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

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

6个回答

找到“你好” your_string

if (your_string.indexOf('hello') > -1)
{
  alert("hello found inside your_string");
}

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

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

字母数字正则表达式

2021-03-19 12:21:12
那很有帮助。作为一名 Python 程序员,我用它来替换“in”关键字(这可能是也可能不是非正统的,我不确定)但它不仅仅适用于单个字符。
2021-03-27 12:21:12
您会使用正则表达式来检查单个字符吗?要获得内置函数所做的完全相同的事情,这是过多的开销。有很多人不理解正则表达式,通常简单的答案是最好的。
2021-03-27 12:21:12
我不明白这是如何在答案中投票的。我可以看到很多人通过谷歌搜索来到这里。更好的方法肯定是使用正则表达式。
2021-04-04 12:21:12
我会去的/hello/g.test(your_string)虽然 indexOf 有效,但我认为正则表达式测试可以更好地说明您要完成的任务。如果我试图在字符串中查找字符序列,则索引无关紧要。
2021-04-05 12:21:12

使用 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)将它与双重否定!!Logical NOT)一起使用以转换 bools 中的数字:

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

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

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

 
简单,可读,并返回一个布尔值。非常适合不需要正则表达式的情况。
2021-04-09 12:21:12
** 请注意,IE 不支持includes 方法**
2021-04-09 12:21:12

如果您在变量中有文本foo

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

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

检查 string(word/sentence...) 是否包含特定的单词/字符

if ( "write something here".indexOf("write som") > -1 )  { alert( "found it" );  } 
它适用于 IE 吗?--> stackoverflow.com/questions/3480771/...
2021-03-18 12:21:12

ES6includes在 String's 中包含内置方法 ( ) prototype,可用于检查字符串是否包含另一个字符串。

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