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

问题描述 投票:-1回答:1

我有几个正则表达式在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 regex dojo
1个回答
0
投票

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

删除?<NAMED_GROUP>

© www.soinside.com 2019 - 2024. All rights reserved.