Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 旧浏览器中不支持的查找的解决方法?_Javascript_Jquery_Regex_Lookbehind - Fatal编程技术网

Javascript 旧浏览器中不支持的查找的解决方法?

Javascript 旧浏览器中不支持的查找的解决方法?,javascript,jquery,regex,lookbehind,Javascript,Jquery,Regex,Lookbehind,由于缺少浏览器支持,我需要将2 lookbehind RegExp更改为其他内容 我有以下两种模式,其中包括一个回顾: /(?<!^|\,)\'[^\']+\'\:/g 匹配模式”(非a'):(即“abcdef”):,如果该模式不在字符串开头或前面有, /(?<!^|\,)\'[^\']+\'\:/g 现在我知道上面的RegExp系列可以做得更优雅一些,但这些不是我要找的机器人 上面的代码在最新版本的Edge、Firefox和Chrome中进行了测试,尽管JavaScript抛

由于缺少浏览器支持,我需要将2 lookbehind RegExp更改为其他内容

我有以下两种模式,其中包括一个回顾:

/(?<!^|\,)\'[^\']+\'\:/g
  • 匹配模式”(非a'):(即“abcdef”):,如果该模式不在字符串开头或前面有

     /(?<!^|\,)\'[^\']+\'\:/g
    
    现在我知道上面的RegExp系列可以做得更优雅一些,但这些不是我要找的机器人

    上面的代码在最新版本的Edge、Firefox和Chrome中进行了测试,尽管JavaScript抛出了一个错误,但即使使用Lookback,它在这些浏览器中仍然可以正常工作

    但正如我所说,RegExp lookbehind只被76.49%的互联网用户使用的浏览器支持,我对只有三分之四的访问我网站的用户能够使用其中的一部分并不感兴趣

    因此,我正在为上面RegExp的lookback部分寻找一种解决方法

    我已经尝试了这里列出的所有解决方案:

    这些基本上都可以归结为

  • 修改代码以使用前瞻
  • 捕获匹配的前一个字符,然后将前一个字符替换为其自身
  • 在服务器端执行操作
  • 撇开解决方案2(因为我不知道那个字符是什么-因为前面的字符可以是任何允许的字符)和解决方案3不谈。(因为此事务不涉及服务器端)当我尝试建议的先行方法时,它们都涉及更改匹配的RegExp 即

    将新格式与前瞻性匹配。但老实说,我甚至不知道从哪里开始改变它,以使其与前瞻模式相匹配

    这些是我要找的机器人

    考虑到上述两种具有后向查找功能的模式:

    /(?<!^|\,)\'[^\']+\'\:/g
    
    /(?
    及

    /(?
    具有lookahead的新模式(具有相同的功能)看起来像什么?

    此模式
    (?不声明字符串的开头或
    直接位于左侧。因此,左侧应该有一个字符,而不是

    ([^,])'[^']+':
    
    您可以使用一个捕获组来匹配要替换的内容之前的内容,并使用替换中的组来保留它

    请注意,您不必转义

    ([^,])'[^']+':
    
    比如说

    str= str.replace(/([^,])'[^']+':/g, "$1':");
    
    你也可以这样做

    str= str.replace(/([^:])'[^']+',/g, "$1',");
    
    工作得很有魅力:)谢谢
    str= str.replace(/([^,])'[^']+':/g, "$1':");
    
    str= str.replace(/([^:])'[^']+',/g, "$1',");