zoukankan      html  css  js  c++  java
  • escapeRegExp捕捉通配符的代码解析

    费了好几个小时,把一小段正则代码搞通了,回顾并记下,加深记忆。

     

    该段代码来自yii.js,它也是引自stackoverflow,地址是:http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex

     

    代码如下:

    function escapeRegExp(str) {

        return str.replace(/[-[]/{}()*+?.\^$|]/g, "\$&");

    }

    function isReloadableAsset(url) {

        for (var i = 0; i < pub.reloadableScripts.length; i++) {

            var rule = getAbsoluteUrl(pub.reloadableScripts[i]);

            var match = new RegExp("^" + escapeRegExp(rule).split('\*').join('.*') + "$").test(url);

            if (match === true) {

                return true;

            }

        }

        return false;

    }

    重点是第一个函数的返回值,以及第二个函数生成的RegExp实例对象。

     

    str.replace(/[-[]/{}()*+?.\^$|]/g, "\$&");

    这句话的意思是对str中匹配到的字符在其前加。而被匹配的字符包括-[]{}()*+?.^$|,这些符号很明显都是正则表达式中的保留字符,必须进行转义,否则不能正确识别为它本身作为标点符号的意义。

     

    识别后,比如-将被替换为-,[]将被对应替换为[]。

     

    第二个函数中的match,是对经过escapeRegExp方法处理过的url,该url是用户自定义的可以重载的脚本url,此时如果其中有通配符,即*,会被以它为分解进行切割,变成数组,紧接着用 .*进行连接,成字符串。正则表达式中.*是可以匹配所有字符的。

  • 相关阅读:
    ArcGIS API ForJS 3.25开发总结(持续更新)
    geotools实现将shp导入mysql
    OL4如何以TMS服务调用WMTS服务的缓存切片
    PostGIS type: LINESTRING[2] We have a Multilinestring with 2 parts, can't use -S switch!解决方案
    OL4加载geowebcache 部署的离线切片
    geoserver发布自定义坐标系矢量切片(以北京54投影坐标系为例)
    geoserver使用sld(点通过svg填充)样式
    关于用geoserver进行切图自定义GridSet出现EPSG:2379: 0.0,0.0,-1.0,-1.0
    OL4通过ajax加载geoserver中WMS的GetFeatureInfo实现点击查询(解决跨域问题)
    作为一个GIS开发人员,你必须知道的坐标系那些事
  • 原文地址:https://www.cnblogs.com/jiangtian/p/6909616.html
Copyright © 2011-2022 走看看