浅谈 js 字符串 search 方法

浅谈 js 字符串 search 方法这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习。具体记不清了,今天就来简单分析下search究竟是什么用的。从字面意思理解,一个是搜索字符串吧。varstr="1

大家好,又见面了,我是你们的朋友全栈君。

<span role="heading" aria-level="2">浅谈 js 字符串 search 方法这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习。
具体记不清了,今天就来简单分析下 search 究竟是什么用的。

从字面意思理解,一个是搜索字符串吧。

var str = "123456789abcde";
console.log( str.search("abc") ); // 9 

确实是搜索指定字符在一个字符串中出现的位置,如果不存在就返回 -1
可是这样就跟 indexOf 功能一样了,何必单独搞一个 search 出来呢?

var str = "123456789abcde";
console.log( str.search("abc") ); // 9
console.log( str.indexOf("abc") ); // 9
console.log( str.search("xxx") ); // -1
console.log( str.indexOf("xxx") ); // -1

点击右侧运行可查看输出结果。

其实区别在于 search 是强制正则的,而 indexOf 只是按字符串匹配的。
来看一个例子:

var str = "123456789.abcde"; // 比刚才多了一个 . 而已
console.log( str.search(".") );    // 0  因为正则 . 匹配除\n以外任意字符
console.log( str.indexOf(".") );   // 9  只能匹配字符 .
console.log( str.search("\\.") );  // 9  相当于 new RegExp("\\.")
console.log( str.indexOf("\\.") ); // -1 匹配字符 \. 所以不存在
console.log( str.search(/\./) );   // 9  正则匹配转以后的 . 字符
console.log( str.indexOf(/\./) );  // -1 相当于匹配字符串 "/\./" 所以不存在

这个例子可以很好的说明 search 强制正则匹配模式。
来看下 MDN 上是怎么说的吧《String.prototype.search()
可以看到他给出的语法是 str.search(regexp) 格式,说明参数必须是正则,如果不是正则,也会调用 new RegExp(obj) 转为正则的。

好了,今天的分享就这些了。明天见。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/155279.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 验证二叉搜索树 leetcode_二叉树的最长路径

    验证二叉搜索树 leetcode_二叉树的最长路径重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源 原创  2016年05月08日 23:14:19 标签:java equal方法重写 /java /重写equals方法和hashCode方 10077 转载请注明出处: http://blog.csdn.net/javazejian/art…

  • mac pro M1(ARM)安装:VMWare Fusion及linux(centos7/ubuntu)(一)

    mac pro M1(ARM)安装:VMWare Fusion及linux(centos7/ubuntu)(一)0.引言最近正好在macM1上安装centos虚拟机以及开发环境,特记录下,以供后续有需要的同学参考1.下载1.1安装VMwareFusion我选择在VMware上运行虚拟机,所以需要下载VMwareFusion下载地址:VMwareFusionforM1选择ARM版本下载,目前是官方推出的针对M1的试用版本,无需激活,后续是否收费还未可知下载后双击安装即可1.2下载centoscentosform1下载地址:centosform1北京外国语大学镜像地址(推荐下

    2022年10月17日
  • 指令周期,机器周期,时钟周期的概念及三者之间的关系图_总线周期和时钟周期

    指令周期,机器周期,时钟周期的概念及三者之间的关系图_总线周期和时钟周期指令周期:CPU每取出一条指令并执行这条指令,都要完成一系列的操作,这一系列操作所需要的时间通常叫做一个指令周期。换言之指令周期是取出一条指令并执行这条指令的时间。由于各条指令的操作功能不同,因此各种指令的指令周期是不尽相同的。例如一条加法指令的指令周期同一条乘法指令的指令周期是不相同的。机器周期:机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作……

    2022年10月13日
  • 几种tree命令的简单安装方法

    几种tree命令的简单安装方法Linux基础tree命令的安装tree命令以树状图列出文件目录结构。不过某些Linux上(Centos6)没有tree命令,本文将介绍安装方法。一、利用镜像安装安装tree命令步骤1.查看系统版本:cat/etc/issue//查看发行版本2.将对应镜像放入光驱,3.挂载镜像文件mount/dev/cd

  • 详解EditText输入监听TextWatcher「建议收藏」

    日常开发中,我们可能会遇到需要监听EditText输入,比如判断输入是否为电话号码,获取输入的数据长度来限定字数等。这就需要监听EditText的输入状态。EditText使用TextWatcher实现类似按钮监听事件:使用方法效果图:MainActivity.javapublicclassMainActivityextendsAppCompatActivity{priv

  • sqlserver日期格式化年月_calendar格式化日期

    sqlserver日期格式化年月_calendar格式化日期SQLServer日期格式化SelectCONVERT(varchar(100),GETDATE(),0):0516200610:57AMSelectCONVERT(varchar(100),GETDATE(),1):05/16/06SelectCONVERT(varchar(100),GETDATE(),2):06.05.16SelectCONVE…

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号