浅谈 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) 转为正则的。
好了,今天的分享就这些了。明天见。。
浅谈 js 字符串 search 方法的更多相关文章
- 浅谈 js 字符串 trim 方法之正则篇
原文:浅谈 js 字符串 trim 方法之正则篇 关于 trim 其实没啥好说的,无非就是去除首位空格,对于现代浏览器来说只是简单的正则 /^\s+|\s+$/ 就可以搞定了.而且支持中文空格 等 ...
- 浅谈 js字符串 trim 方法之正则篇
关于 trim 其实没啥好说的,无非就是去除首位空格,对于现代浏览器来说只是简单的正则 /^\s+|\s+$/ 就可以搞定了.而且支持中文空格 等等.什么 \s 支持 中文空格?是的. 打开 Re ...
- 浅谈 js 字符串之神奇的转义
原文:浅谈 js 字符串之神奇的转义 字符串在js里是非常常用的,但是你真的了解它么?翻阅<MDN String>就可以了解它的常见用法了,开门见山的就让你了解了字符串是怎么回事. 'st ...
- 浅谈 js 对象 toJSON 方法
前些天在<浅谈 JSON.stringify 方法>说了他的正确使用姿势,今天来说下 toJSON 方法吧.其实我觉得这货跟 toString 一个道理,他是给 stringify 方法字 ...
- 浅谈js的join()方法
简单描述:今天看同事的代码,看js的时候,看到了一个join()方法,我从来都没有用过,就查了查,第一次用就记录一下 正经的: 定义和用法 join() 方法用于把数组中的所有元素放入一个字符串. 元 ...
- 浅谈js数据类型识别方法
js有6种基本数据类型 Undefined , Null , Boolean , Number , String ,Symbol和一种引用类型Object,下面我们就来一一看穿,哦不,识别他们. t ...
- 浅谈js的sort()方法
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码(字符串Unicode码点)的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以 ...
- 浅谈 js 正则之 test 方法
原文:浅谈 js 正则之 test 方法 其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西.先来看个东西吧. var re = /\d/; console. ...
- js正则表达式test方法、exec方法与字符串search方法区别
1.正则表达式test方法 test() 方法用于检测一个字符串是否匹配某个模式 返回值: 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 fal ...
随机推荐
- Mobile Services
提交批量数据
Mobile Services批量提交数据,參考了文章:Inserting multiple items at once in Azure Mobile Services.里面事实上已经介绍得比較清楚 ...
- quick-cocos2d-x教程8:程序框架内lib文件夹分析
lib文件夹是如今全部文件夹中最复杂的,包括了整个运行所需的库文件.我们简单看下,在开发初期,不须要深入到这个库里去研究 cocos2d-x 文件夹就是c++版的原始文件 framework_prec ...
- SQL Server审计功能入门:更改跟踪(Change Tracking)
原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...
- atitit.无损传输二进制数据串传输网络
atitit.无损传输二进制数据串传输网络 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1 2. base64 2 3. iso-8859-1 (推荐) 2 4. utf-8 ...
- 坑爹BUG,没有详细的看还真看不出问题
Queue queue = new LinkedList<String> (); for(int i = 0; i<20; i++) { queue.add("坑爹&quo ...
- 解析grant connect, resource to user语句
今天同事问了一个问题:"创建用户分配的权限是:grant connect,resource to user;,可是建立view的时候失败了,错误是权限不够,后来我给这个用户分配了创建view ...
- XeTeX中文解决方案(temp)
临时记录一下XeTeX的中文解决方案.一些包的文档只是走马观花得到的解决方法,所以可能有诸多纰漏. 另个人还是比较看好LuaTeX,但是在里边鼓捣中文还是一团糟,等探索一下再回来补充. 我使用的包是x ...
- crontab演出newLISP脚本设置环境变量
今天遇到一个问题.执行在终端newLISP文字,一切正常,搬去crontab在将无法正常工作.即使crontab -e命令是在同一个用户执行.还是有问题. 因为newLISP脚本使用hive和hado ...
- linux 终端下敲ctrl-c时,到底发生了什么?(转)
通过telnet登录到单板,然后按ctrl-c会发生什么情况,流程是怎么样的? 在分析之前,先介绍tty的相关知识.我们可以认为,所有跟输入输出相关的操作,最终都由tty来接管.举例来说,当我们敲 l ...
- Python 基于学习 网络小爬虫
<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...