正则表达式在边缘提供了意外的量词,但没有镶边

时间:2019-02-26 14:52:17

标签: javascript regex dojo

我有几个正则表达式在chrome中可以正常使用,但在edge或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执行只会停止,并且开发人员窗口中的错误只是意外的量词,而没有其他提示。

1 个答案:

答案 0 :(得分:0)

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

删除?<NAMED_GROUP>