我有几个正则表达式在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执行只会停止,并且开发人员窗口中的错误只是意外的量词,而没有其他提示。
答案 0 :(得分:0)
这里的问题是,除了在chrome中运行时,JavaScript不支持命名组。为了解决这个问题,我只需要删除所有命名的组语法。
删除?<NAMED_GROUP>