【问题标题】:uuidv4.js regular expression issue - IE11uuidv4.js 正则表达式问题 - IE11
【发布时间】:2020-03-24 22:40:36
【问题描述】:

我目前在一家公司工作,我必须解决一些 IE11 问题。其中一个问题仅存在于以 node_modules 中的 uuidv4 为中心的 IE11 中。

错误代码和我看到的错误是

正则表达式语法错误

    /***/ (function (module, exports, __webpack_require__) {

        "use strict";
        //eval("

        var __importDefault = (this && this.__importDefault) || function (mod) {

            return (mod && mod.__esModule) ? mod : {"default": mod };};

            Object.defineProperty(exports, "__esModule", { value: true });
            const v4_1 = __importDefault(__webpack_require__(/*! uuid/v4 */ "../node_modules/uuid/v4.js"));
            const v5_1 = __importDefault(__webpack_require__(/*! uuid/v5 */ "../node_modules/uuid/v5.js"));
            const uuidv4 = function () {
                return v4_1.default();
            };

            uuidv4.regex = {
                v4: /^(?:[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12})|(?:0{8}-0{4}-0{4}-0{4}-0{12})$/u,
                v5: /^(?:[a-f0-9]{8}-[a-f0-9]{4}-5[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12})|(?:0{8}-0{4}-0{4}-0{4}-0{12})$/u
            }; uuidv4.is = function (value) {

                return uuidv4.regex.v4.test(value) || uuidv4.regex.v5.test(value); 
            }; uuidv4.empty = function () {
                return '00000000-0000-0000-0000-000000000000';
            };

            uuidv4.fromString = function (text) {
                const namespace = 'bb5d0ffa-9a4c-4d7c-8fc2-0a7d2220ba45';
                const uuidFromString = v5_1.default(text, namespace);
                return uuidFromString;
            };

            exports.default = uuidv4;

            //# sourceURL=webpack://_chex/../node_modules/uuidv4/build/lib/uuidv4.js?");

            /***/
        }),

我确实看到并希望解决此处更改的代码中可能存在的问题之一

v5: /^(?:[a-f0-9]{8}-[a-f0-9]{4}-5[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12})|(?:0{8}-0{4}-0{4}-0{4}-0{12})$/u

v5: /^(?:[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12})|(?:0{8}-0{4}-0{4}-0{4}-0{12})$/u

{4}-5 是这个正则表达式中的违规项目,但是 IE11 仍然抱怨同样的问题。

但仔细观察,这就是它抱怨的那条线

v4: /^(?:[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12})|(?:0{8}-0{4}-0{4}-0{4}-0{12})$/u,

当尝试将调试器语句放置到位时,我无法像到达那里之前那样点击这些,并且正在评估代码它失败并产生错误。

我们将不胜感激地收到任何和所有这方面的帮助。

【问题讨论】:

  • 去掉u修饰符,你甚至不需要它。
  • 为什么会导致问题?
  • IE11 不支持 ES6。 /u 在 ECMAScript 6 中引入
  • 你是 ES6 元素吗?混蛋!!这是有效的,所以如果你想提供它作为答案,我很乐意奖励积分

标签: javascript regex node-modules


【解决方案1】:

/u modifier 仅在 ECMAScript 6 / ES2015 中引入,IE11 only supports ES5 standard

由于没有使用 u 修饰符标志定义其行为的特定构造,您可以简单地删除 u 并且您的表达式将起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多