正则表达式给出边缘但不是铬的意外量词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式给出边缘但不是铬的意外量词相关的知识,希望对你有一定的参考价值。

我有几个正则表达式在chrome中运行得很好但不在边缘或Internet Explorer中。在浏览器上调试时,它会出现意外量词错误。此错误的输入为89 9 5。有什么想法吗?

var fps1 = new RegExp(
  "(?<Unit>[a-p])\W*(?<Section>\d+)\W+(?<LatDegrees>\d+)-(?<LatMinutes>\d+)\W+(?<LongDegrees>\d+)-(?<LongMinutes>\d+)");

var dls1 = new RegExp(
  "[/-](L[a-z]*)?\W*(?<Lsd>\d+)\W*(S[a-z]*|\W)\W*(?<Section>\d+)\W*(T[a-z]*|\W)\W*(?<Township>\d+)\W*(R[a-z]*|\W)\W*(?<Range>\d+)\W*([WM][a-z]*|\W)\W*(?<Meridian>\d)\b");

var dls2 = new RegExp(
  "(L[a-z]*)?\W*(?<Lsd>\d+)\W*(S[a-z]*|\W)\W*(?<Section>\d+)\W*(T[a-z]*|\W)\W*(?<Township>\d+)\W*(R[a-z]*|\W)\W*(?<Range>\d+)\W*([WM][a-z]*|\W)\W*(?<Meridian>\d)\b");

var dls3 = new RegExp(
  "(S[a-z]*)?\W*(?<Section>\d+)\W*(T[a-z]*|\W)\W*(?<Township>\d+)\W*(R[a-z]*|\W)\W*(?<Range>\d+)\W*([WM][a-z]*|\W)\W*(?<Meridian>\d)\b");

var dls4 = new RegExp(
  "(T[a-z]*)?\W*(?<Township>\d+)\W*(R[a-z]*|\W)\W*(?<Range>\d+)\W*([WM][a-z]*|\W)\W*(?<Meridian>\d)\b");

var nts1 = new RegExp(
  "(?<Quarter>[abcd])\W+(?<Unit>\d+)\W+(?<Block>[abcdefghijkl])/(?<Sheet>\d+)\W+(?<Subdivision>[abcdefghijklmnop])\W+(?<Sixteenth>\d+)");

var nts2 = new RegExp(
  "(?<Unit>\d+)\W+(?<Block>[abcdefghijkl])/(?<Sheet>\d+)\W+(?<Subdivision>[abcdefghijklmnop])\W+(?<Sixteenth>\d+)");
var nts3 = new RegExp(
  "((?<Block>\w)/)?(?<Sheet>\d+)\W+(?<Subdivision>[abcdefghijklmnop])\W+(?<Sixteenth>\d+)");

当使用Edge调试工具时,它不会超过第一个正则表达式,javascript执行只是停止,开发人员窗口中的错误只是意外的量词,没有其他提示。

答案

这里的问题是JavaScript不支持命名组,但在chrome中运行时除外。要解决这个问题,我只需要删除所有已命名的组语法。

删除?<NAMED_GROUP>

以上是关于正则表达式给出边缘但不是铬的意外量词的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式——转义

正则表达式之量词

JS正则表达式从入门到入土—— 量词

为啥我的正则表达式组量词不起作用?

正则表达式量词 - 两个字符之间的数量

正则表达式无效的量词?