zoukankan      html  css  js  c++  java
  • 浅谈 js 字符串 search 方法

    这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习。

    具体记不清了,今天就来简单分析下 search 究竟是什么用的。

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

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

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

    1
    2
    3
    4
    5
    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 只是按字符串匹配的。
    来看一个例子:

    1
    2
    3
    4
    5
    6
    7
    var str = "123456789.abcde"// 比刚才多了一个 . 而已
    console.log( str.search(".") );    // 0  因为正则 . 匹配除 以外任意字符
    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) 转为正则的。

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

  • 相关阅读:
    MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart
    (转)Spring MVC
    ios>android>javaee
    css标准导航代码
    图片对齐问题
    display:inline、block、inline-block的区别
    css怎么引用某张图片?链接要怎么写
    论怎么写好一篇实验报告
    路由器及其配置方法
    (转)MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
  • 原文地址:https://www.cnblogs.com/taohuaya/p/14057365.html
Copyright © 2011-2022 走看看